我有一个 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 还定义了 BOOST_TEST_MAIN,它引入了 main 的实现。
因此,在一个地方将 BOOST_TEST_MODULE 定义为全局套件的名称,因此还定义 BOOST_TEST_MAIN 以获得 main 的单一实现。
这是我需要在我的 documentation rewrite 中注意的一个微妙之处。 .
关于c++ - boost 测试错误 : main already defined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22328644/