在错误的测试套件中检测到Boost单元测试失败

时间:2009-07-23 16:12:22

标签: c++ unit-testing boost

我正在学习如何使用Boost测试库,我似乎无法让测试套件正常工作。在以下代码中,'test_case_1'无法正确失败,但报告为在主测试套件中而不是'test_suite_1'。

任何人都知道我做错了什么?

#define BOOST_AUTO_TEST_MAIN
#include <boost/test/auto_unit_test.hpp>

BOOST_AUTO_TEST_SUITE(test_suite_1);

BOOST_AUTO_TEST_CASE(test_case_1) {
    BOOST_REQUIRE_EQUAL(1, 2);
}

BOOST_AUTO_TEST_SUITE_END();

编辑:

Ovanes的回答让我更好地理解了套件层次结构 - 在这种情况下,test_suite_1是根套件的子套件,默认情况下称为“Master Test Suite”。默认日志记录仅显示根套件,这不是我对其可以处理的预期:)

您可以通过定义BOOST_TEST_MODULE来设置根套件名称 - 因此上面示例的替代版本提供了预期的错误消息:

#define BOOST_TEST_MODULE test_suite_1
#define BOOST_AUTO_TEST_MAIN

#include <boost/test/auto_unit_test.hpp>

BOOST_AUTO_TEST_CASE(test_case_1) {
    BOOST_REQUIRE_EQUAL(1, 2);
}

2 个答案:

答案 0 :(得分:2)

这取决于您如何配置记录器以生成报告。例如,传递给您的示例--log_level = all将导致以下输出:

Running 1 test case...
Entering test suite "Master Test Suite"
Entering test suite "test_suite_1"
Entering test case "test_case_1"
d:/projects/cpp/test/main.cpp(9): fatal error in "test_case_1": critical check 1 == 2 failed [1 != 2]
Leaving test case "test_case_1"
Leaving test suite "test_suite_1"
Leaving test suite "Master Test Suite"

*** 1 failure detected in test suite "Master Test Suite"

以下是Boost Test Framework命令行配置选项的链接。

的问候,
Ovanes

答案 1 :(得分:0)

此外,一旦定义了BOOST_TEST_MODULE,就不需要定义BOOST_AUTO_TEST_MAIN