我正在学习如何使用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);
}
答案 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