【问题标题】:Boost unit test in separate cpp files在单独的 cpp 文件中提升单元测试
【发布时间】:2019-07-23 16:03:05
【问题描述】:

我想将我的 Boost 单元测试分成单独的 .cpp 文件(例如 Test1.cpp、Test2.cpp、Test3.cpp ... 等),这样我就不会在单个 cpp 文件中包含 1000 个测试。到目前为止,我在尝试构建时遇到了各种错误。

Test1.cpp

#define BOOST_TEST_MODULE MasterTestSuite
#include <boost/test/included/unit_test.hpp>
BOOST_AUTO_TEST_CASE(myTestCase)
{
  BOOST_CHECK(1 == 1);  
}

Test2.cpp

#define BOOST_TEST_MODULE MasterTestSuite2
#include <boost/test/included/unit_test.hpp>
BOOST_AUTO_TEST_CASE(myTestCase2)
{
  BOOST_CHECK(2 == 2);  
}

【问题讨论】:

  • “到目前为止,我在尝试构建时遇到了各种错误。” - 你能给我们举个例子吗? (请将其编辑到问题中)
  • This section 表示对于单个二进制文件,BOOST_TEST_MODULE 应该只定义一次,并且文档的this section 表示如何将仅标头方法用于多个翻译单元。

标签: c++ unit-testing boost boost-test


【解决方案1】:

boost-test 在定义BOOST_TEST_MODULE 时生成它自己的main 函数,请参见:BOOST_TEST_MODULE。您的一些错误很可能是因为这个原因。

我将BOOST_TEST_MODULE 放在一个单独的文件中,例如:

test_main.cpp

#ifndef _MSC_VER
#define BOOST_TEST_DYN_LINK
#endif
#define BOOST_TEST_MAIN
#define BOOST_TEST_MODULE Main
#include <boost/test/unit_test.hpp>

然后使用test suites将单元测试分成单独的.cpp文件,每个单元测试文件中都有test suite,例如:

Test1.cpp

#include <boost/test/unit_test.hpp>

BOOST_AUTO_TEST_SUITE(MyTests)

BOOST_AUTO_TEST_CASE(myTestCase)
{
  BOOST_CHECK(1 == 1);
}

BOOST_AUTO_TEST_SUITE_END()

Test2.cpp

#include <boost/test/unit_test.hpp>

BOOST_AUTO_TEST_SUITE(MyTests2)

BOOST_AUTO_TEST_CASE(myTestCase2)
{
  BOOST_CHECK(2 == 2);
}

BOOST_AUTO_TEST_SUITE_END()

您可以在测试目录here 中找到这种方法的示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-13
    • 1970-01-01
    • 1970-01-01
    • 2014-01-08
    • 1970-01-01
    • 2016-11-07
    • 2011-03-10
    • 2022-01-15
    相关资源
    最近更新 更多