升压测试错误:主已定义

Boost Test Error: main already defined

本文关键字:定义 错误 测试      更新时间:2023-10-16

我有一个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