c++ - Boost.Test 测试静态库

标签 c++ unit-testing static-libraries boost-test

我正在使用 Boost.Test 进行单元测试。

因为一些原因,我想在不同的静态库上编写单元测试用例。

问题是当我这样做时,自动注册器不工作。

例如,如果我有类似的东西:

// foo_tests.cpp
#define BOOST_TEST_MODULE "Foo"
#include <boost/test/unit_test.hpp>
BOOST_AUTO_TEST_CASE( Bar )
{
    BOOST_CHECK( false );
}
// used to generate libFooTests.a

// main.cpp
#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_MAIN
#include <boost/test/unit_test.hpp>
// used to generate main.o

然后,如果我将 main.o 与 libFooTests.a 链接起来并执行最终的二进制文件,它会显示:

测试设置错误:测试树为空

如果我直接从源代码创建二进制文件一切正常,但我不希望能够使用自动注册在静态库中编写单元测试。

我能做到吗?

我需要定义一些宏吗?我需要从 libFooTests.a 导出一些符号吗?

谢谢!

最佳答案

How to force inclusion of "unused" object definitions in a library

这是您遇到的同样问题,您必须得出类似于我在回答中所做的解决方案。

关于c++ - Boost.Test 测试静态库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4877990/

相关文章:

c++ - valgrind 报告对 std::string 的无效读取

c++ - 屏幕截图创建和上传

编译 "stress-ng"包的静态链接可执行文件

c# - 从 C# 中通过引用传递,通过 C.L.I.到非托管 C++

c++ - 注释中这些转义序列(\n、\t、\v)在 C++ 中的确切含义是什么?

c++ - 返回值与函数返回类型不匹配

python - Django 测试客户端不创建数据库条目

unit-testing - 是否有一个MSTest等效于NUnit的显式属性?

javascript - 为什么 SauceLabs 在我的 QUnit 测试明显通过时却说它失败了?

mysql - 如何手动将.h文件导入系统库?