我目前正在学习如何使用 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);
}
最佳答案
这取决于您如何配置记录器以生成报告。例如,传递给您的示例 --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 命令行配置选项的链接.
问候,
奥瓦内斯
关于c++ - 在错误的测试套件中检测到 Boost 单元测试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1172867/