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

标签 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);
}

最佳答案

这取决于您如何配置记录器以生成报告。例如,传递给您的示例 --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/

相关文章:

使用 MinGW 的 C++ 可执行文件大小

java - JUnit 测试——是什么让它比手动测试更有用?

python - 使用多个 Python 版本构建 Boost

c++ - boost::mutex::scoped_lock 已被使用,有时会抛出异常

c++ - 在堆栈上分配局部变量并使用指针算法

c++ - 如何在函数重载决议中转储候选人?

python - 如何模拟一个深度为两个导入的 Python 类?

c# - Verify() 和 Setup()...VerifyAll() 之间的最小起订量区别

c++ - boost::random::variate_generator - 构造后更改参数

c++ - C++ minsweeper 原型(prototype)上的段错误