提升测试错误:主要已定义

Jac*_*ieg 2 c++ boost boost-test

我有一个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()
Run Code Online (Sandbox Code Playgroud)

和文件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()
Run Code Online (Sandbox Code Playgroud)

当我编译项目时,我得到一个链接错误,说明main已经定义.我注意到该main文件已定义unit_test.hpp但我需要将其包含在测试宏中.

我应该如何在2个单独的文件中添加2个测试用例?

leg*_*ize 8

真正的问题是BOOST_TEST_MODULE只能在整个测试可执行文件中定义一次.定义BOOST_TEST_MODULE还定义了BOOST_TEST_MAIN,它引入了main的实现.

因此,在一个地方定义BOOST_TEST_MODULE作为全局套件的名称,因此也定义BOOST_TEST_MAIN以获得main的单个实现.

这是我在文档重写时需要注意的一个微妙之处.

  • 他们已经重写了 boost.test 的文档,现在好多了。有时我会删除上面链接中的内容,但我很懒:) (2认同)