小编put*_*mpp的帖子

在Ubuntu上增强单元测试动态链接

我正在尝试使用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

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