Gin*_*ngi 6 c++ boost unit-testing tap autotools
我的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)
如果你像我一样使用boost-m4,你可以尝试:
./configure.ac:
BOOST_REQUIRE([1.61])
BOOST_SYSTEM
BOOST_TEST
Run Code Online (Sandbox Code Playgroud)
./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)
Run Code Online (Sandbox Code Playgroud)
这似乎比直接将“-lboost_unit_test_framework”放入 Makefile.am 中更优雅。您还可以考虑将“#define BOOST_TEST_DYN_LINK”从 cpp 移动到 Makefile.am 中的 AM_CPPFLAGS,如上所示。
有关更多详细信息,请参阅 boost-m4 README
| 归档时间: |
|
| 查看次数: |
1306 次 |
| 最近记录: |