2013-05-01 63 views
6

我的C++应用程序对应用程序的API为独立的程序各种基于壳集成测试以及源代码的单元测试。这些测试通过make check目标跑,通过自动工具(autoconf的,automake的),其come with a test-driver and a log parser生成。我已经开始采用了Boost单元测试框架进行单元测试套件进行更好的管理。有没有办法同时运行验收测试和单元测试的make check目标下(同时使用升压UTF和标准TAP测试)?使用升压单元测试框架(UTF)与`让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) 

升压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(); 

回答

2

如果您正在使用boost-m4像我这样做,你可以试试:

的./configure。 AC:

BOOST_REQUIRE([1.61]) 
BOOST_SYSTEM 
BOOST_TEST 

./test/Makefile.am(添加AM_CPPFLAGS,AM_LDFLAGS和LDADD)

AM_CPPFLAGS = $(BOOST_CPPFLAGS) -DBOOST_TEST_DYN_LINK 
AM_LDFLAGS = $(BOOST_LDFLAGS) $(BOOST_SYSTEM_LDFLAGS) $(BOOST_UNIT_TEST_FRAMEWORK_LDFLAGS) 
LDADD = $(BOOST_SYSTEM_LIBS) $(BOOST_UNIT_TEST_FRAMEWORK_LIBS) 

check_PROGRAMS = test1 test2 
SOURCES = test1.cpp test2.cpp 
CC = g++ 
TESTS = $(check_PROGRAMS) standalone1.test standalone2.test 
EXTRA_DIST = $(TESTS) 

这似乎不是直接把“-lboost_unit_test_framework”你的Makefile.am里更优雅。您也可以考虑从您的CPP移动“的#define BOOST_TEST_DYN_LINK”在Makefile.am到AM_CPPFLAGS如上图所示。

有关更多详细信息,请参阅boost-m4自述文件

1

的标准方法来对付它没有使用斌初选但测试主。在你的情况你的Makefile.am看起来是这样的:

LDADD = -lboost_unit_test_framework 

TESTS = standalone1 standalone2 
standalone1_SOURCES = test1.cpp standalone1.test 
standalone2_SOURCES = test2.cpp standalone2.test 

TEST_LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) \ 
        $(top_srcdir)/test/tap-driver.sh 
EXTRA_DIST = $(TESTS) 

欲了解更多信息请检查该answer