相关疑难解决方法(0)

使用Boost单元测试框架(UTF)和`make check`

我的C++应用程序针对独立程序进行了各种基于shell的集成测试,以及针对应用程序API的源代码单元测试.测试通过make check目标运行,通过Autotools(autoconf,automake)生成,它带有测试驱动程序和日志解析器.我已经开始采用Boost Unit Test Framework来更好地管理单元测试套件.有没有办法在目标下运行验收测试和单元测试(使用Boost UTF和标准TAP测试)make check

Makefile.am看起来像这样:

check_PROGRAMS = test1 test2
SOURCES = test1.cpp test2.cpp
CC = g++
TESTS = $(check_PROGRAMS) standalone1.test standalone2.test
LDADD = -lboost_unit_test_framework
TEST_LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) \
    $(top_srcdir)/test/tap-driver.sh
EXTRA_DIST = $(TESTS)
Run Code Online (Sandbox Code Playgroud)

Boost UTF测试套件如下所示:

#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_MODULE "My Unit Tests"

#include <boost/test/unit_test.hpp>

BOOST_AUTO_TEST_SUITE(MyTestSuite1);
    BOOST_AUTO_TEST_CASE(MyTestCase1) {
        BOOST_CHECK(true);
    }
BOOST_AUTO_TEST_SUITE_END();
Run Code Online (Sandbox Code Playgroud)

c++ boost unit-testing tap autotools

6
推荐指数
1
解决办法
1306
查看次数

Automake AM_LDADD解决方法

我想将相同的LDADD属性(单元测试库)设置为大量目标(单元测试C ++文件)。我首先尽管可能是automake具有AM_LDADD变量来将该库添加到文件中的所有目标,但事实并非如此。在一些邮件列表中,我发现了一些简短的讨论,要求添加它:http : //gnu-automake.7480.n7.nabble.com/AM-LIBS-AM-LDADD-td3698.html

我的问题是,您如何处理?有什么方法可以避免手动将LDADD属性添加到每个目标?

到目前为止,我的Makefile.am看起来像:

 test1_SOURCES = ...
 test1_LDADD = -llibrary 
  ...
  ...
 test20_SOURCES = ...
 test20_LDADD = -llibrary 
Run Code Online (Sandbox Code Playgroud)

c++ automake unit-testing makefile autotools

5
推荐指数
1
解决办法
1205
查看次数

标签 统计

autotools ×2

c++ ×2

unit-testing ×2

automake ×1

boost ×1

makefile ×1

tap ×1