增强测试链接
Boost test linking
我想在我的项目中使用Boost test
。
我使用cmake在我的项目,所以我写了一个简单的CMakeList.txt
包装它:
find_package (Boost COMPONENTS unit_test_framework REQUIRED)
file(GLOB_RECURSE UnitTests_sources tests/*.cpp)
add_executable(UnitTests
${UnitTests_sources}
)
enable_testing()
ADD_TEST (UnitTests UnitTests)
所以,cmake在这里工作得很好。问题出现在编译过程中:
链接CXX可执行文件。/../bin/UnitTests
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.6.1/../../../../lib/crt1。o:
_start': (.text+0x20): undefined reference to
main'Collect2: ld返回1退出状态
以下是tests文件夹(LogManagerTest.cpp
)中唯一的文件:
#include "Utils/LogManager.hpp"
#include <boost/test/unit_test.hpp>
#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_MAIN
#define BOOST_TEST_MODULE LogManager
BOOST_AUTO_TEST_CASE(LogManagerCase)
{
BOOST_REQUIRE(true);
/*LogManager manager;
manager.Initialize();
manager.Deinitialize();*/
}
怎么了?
添加
ADD_DEFINITIONS(-DBOOST_TEST_DYN_LINK)
到你的CMakeLists.txt中,这样它会自动为你生成一个main()。另外,
#define BOOST_TEST_MODULE xxx
必须在包含unit_test.hpp之前定义。
你可以找到更多的信息和选项:http://www.boost.org/doc/libs/1_47_0/libs/test/doc/html/utf/compilation.html
您需要使用-lboost_unit_test_framework进行编译,如果您使用BOOST_TEST_DYN_LINK
, boost将为您生成main,因此您需要告诉makefile查找该main。然后可以使用以下命令进行编译:
#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_MODULE LogManager
BOOST_AUTO_TEST_CASE(LogManagerCase)
{
BOOST_REQUIRE(true);
/*LogManager manager;
manager.Initialize();
manager.Deinitialize();*/
}
BOOST_AUTO_TEST_SUITE_END()
试着移动
#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_MAIN
有一次我犯了一个愚蠢的打字错误,也得到了这个。编译器被骗了
就像"#define BOOTS_TEST_MODULE DUMMY"一样。是的,我喜欢靴子
相关文章:
- 运行 C++ 单元测试时LNK2005链接错误
- 如何在C++中通过链接器进行模拟测试
- 链接CPP文件进行测试时发生LNK2019错误
- 使用cmake构建google测试单元测试时出现链接器错误
- C++ 使用链接时间替换进行单元测试
- 我无法编译谷歌测试,告诉链接器输入未使用(macOS)
- 在单元测试项目中包括 .c 文件,并从多个 cpp 文件访问它而不会出现链接问题
- 将单元测试添加到旧解决方案时出现链接错误
- 将我的主输出库与测试可执行文件链接时出现问题
- 模板或链接接缝依赖注入有哪些替代方案来测试非虚拟方法?
- C++/CLR 托管单元测试存在链接器错误
- C++ / GoogleTest - 如何在链接目录中为每个测试运行安装程序
- Cmake,子目录和Google测试(模拟)无法正确链接.找不到测试
- Qt测试模拟动态链接库
- 难以在测试中链接项目中的对象文件
- 每次捕获测试框架较长的链接时间
- 交叉围栏GCC:在检查动态链接器特征时,在GCC_NO_EXECUTABLES之后不允许链接测试
- GTEST测试项目链接链接到其他可执行文件
- CMake 和 GTest 链接测试
- 我如何编译/链接测试用例(googleTest)使用cmake的代码捆绑在共享库