升压测试错误:主已定义
Boost Test Error: main already defined
我有一个Visual Studio
项目,我想用Boost.Test
做一些单元测试。
我有 2 个文件:
文件 1:
#define BOOST_TEST_MODULE FileX
#include <boost/test/unit_test.hpp>
#include <stdio.h>
BOOST_AUTO_TEST_SUITE(test_suite_name)
BOOST_AUTO_TEST_CASE(TestFileX)
{
BOOST_CHECK(true);
}
BOOST_AUTO_TEST_SUITE_END()
和文件 2:
#define BOOST_TEST_MODULE XContainer
#include <boost/test/unit_test.hpp>
#include <stdio.h>
BOOST_AUTO_TEST_SUITE(test_suite_name2)
BOOST_AUTO_TEST_CASE(TestXContainer)
{
BOOST_CHECK(true);
}
BOOST_AUTO_TEST_SUITE_END()
当我编译项目时,我收到一个链接错误,说 main 已经定义。 我注意到main
文件是在unit_test.hpp
中定义的,但我需要将其包含在测试宏中。
我应该如何在 2 个单独的文件中添加 2 个测试用例?
真正的问题是BOOST_TEST_MODULE只打算在整个测试可执行文件中定义一次。 定义BOOST_TEST_MODULE也定义了引入main实现BOOST_TEST_MAIN。
因此,在一个地方定义BOOST_TEST_MODULE作为全局套件的名称,因此也定义BOOST_TEST_MAIN以获取 main 的单个实现。
这是我需要在文档重写中注意的微妙之处。
你必须使用#define BOOST_TEST_DYN_LINK
在每个带有测试的源文件中。
testXXX.h 不应包含在 testXXX.cpp 中。
所有testXXX.h文件都应包含在main中.cpp main应包含#define BOOST_TEST_MODULE TestXXXXXXXXX
相关文章:
- 使用命名空间时出现多个定义错误
- 对C宏的未定义引用,但在定义它时会出现重新定义错误
- 尝试调用 .h 文件中定义的变量时出现变量未定义错误
- 在头文件和 cpp 文件中使用一次 #pragma 时出现结构重定义错误
- 链接阶段出现多重定义错误
- 避免模板类中的重定义错误
- 即使我没有包含多个文件,C++中的多个定义错误
- 跨多个类的全局变量而不会出现重定义错误?
- 尝试运行 wasm 函数时出现模块未定义错误
- C++ 预期的左大括号以及重定义错误
- C++:成员的越界声明必须是纯虚函数的定义错误
- c++中数组的未定义错误
- Visual C:模板类中的自定义错误消息
- 为什么C++模板不会导致多个定义错误?
- 只有一个定义/声明时标头声明变量的多堆定义错误
- C++ 在多个其他类中使用单个类 - 编译时出现多个定义错误
- 基类未定义.错误 C2504
- Q 斯坦达项重定义错误
- 可视化C++中的结构定义错误
- VC++ C2011 重定义错误 - 未使用的头文件