我正在尝试使用Boost的单元测试框架构建单元测试.我想动态地将测试套件库与Boost提供的自动生成的测试模块链接起来.这是我一直在使用的基本结构:
test_main.cpp:
#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_MAIN
#include <boost/test/unit_test.hpp>
Run Code Online (Sandbox Code Playgroud)
lib_case.cpp:
#define BOOST_TEST_DYN_LINK
#include <boost/test/unit_test.hpp>
BOOST_AUTO_TEST_SUITE( test_lib )
BOOST_AUTO_TEST_CASE( test_lib_case ) {
BOOST_ASSERT(true);
}
BOOST_AUTO_TEST_SUITE_END()
Run Code Online (Sandbox Code Playgroud)
Makefile文件:
all: unittest unittest2 unittest3
lib_case.o: lib_case.cpp
g++ -g -c -Wall -fPIC lib_case.cpp -o lib_case.o
libcase.so: lib_case.o
g++ -shared -Wl,-soname,libcase.so -o libcase.so lib_case.o
unittest: libcase.so
g++ -o unittest test_main.cpp -L. -lcase -lboost_unit_test_framework
unittest2: test_main.cpp lib_case.cpp
g++ -o unittest2 test_main.cpp lib_case.cpp -lboost_unit_test_framework
unittest3: lib_case.o
g++ -o unittest3 test_main.cpp lib_case.o -lboost_unit_test_framework
Run Code Online (Sandbox Code Playgroud)
在Ubuntu 14.04上进行测试,所有可执行文件都可以编译和链接而不会出错.
'unittest'无法执行'test_lib'套件声称安装失败,但'unittest2'和'unittest3'成功:
$./unittest
Test setup error: test …Run Code Online (Sandbox Code Playgroud) c++ ubuntu singleton dynamic-linking boost-unit-test-framework