2013-05-01 32 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