c++ - 提升数据驱动的测试输出:“断言发生在以下上下文中”
问题描述
我对以下使用 Boost 测试的最小示例的输出有疑问。
#define BOOST_TEST_MODULE ExampleTestSuite
#include <boost/test/included/unit_test.hpp>
#include <boost/test/unit_test.hpp>
using boost::unit_test::test_suite;
using boost::unit_test::framework::master_test_suite;
#include <boost/test/data/test_case.hpp>
namespace bdata = boost::unit_test::data;
BOOST_DATA_TEST_CASE(ExampleTest, bdata::xrange(2), testDatum) {
int exp = testDatum == 0 ? 0 : 1;
BOOST_CHECK_EQUAL(testDatum, exp);
}
如果我用 运行这个测试./boost_testing --log_level=all
,我会得到以下输出:
Running 2 test cases...
Entering test module "ExampleTestSuite"
boost_testing.cpp(11): Entering test suite "ExampleTest"
boost_testing.cpp(11): Entering test case "_0"
boost_testing.cpp(15): info: check testDatum == exp has passed
Assertion occurred in a following context:
testDatum = 0;
boost_testing.cpp(11): Leaving test case "_0"
boost_testing.cpp(11): Entering test case "_1"
boost_testing.cpp(15): info: check testDatum == exp has passed
Assertion occurred in a following context:
testDatum = 1;
boost_testing.cpp(11): Leaving test case "_1"
boost_testing.cpp(11): Leaving test suite "ExampleTest"
Leaving test module "ExampleTestSuite"
*** No errors detected
输出线是什么意思Assertion occurred in a following context: testDatum = 0;
?它是否表明我设置数据驱动测试用例的方式存在问题,或者我可以安全地忽略它吗?
解决方案
我同意这个消息令人困惑:这实际上是对 test 断言上下文的描述,BOOST_CHECK_EQUAL(testDatum, exp)
实际上这不是描述错误,而是附加到检查的上下文。如果您更改--log_level=all
为其他内容,或使用其他输出格式,这应该会消失。
随意提出关于Boost.Test项目的问题
推荐阅读
- oracle - Oracle APEX 5.0 多个空格在 IR 中显示为单个空格
- typescript - Firebase 函数:TypeError:functions.https.HttpsError 不是构造函数
- excel - 从 excel 复制数据,并将其附加到现有的 txt 文件中
- javascript - 带有反应原生的移动箭头
- dataframe - 按组汇总的 Juila 数据框汇总(又名小计)
- android - Flutter 在 VSCode 中为 android 添加圆形应用图标
- c - 如何将库 libbson 1.9.5 添加到 Visual Studio?
- javascript - 选择下拉菜单的选项时,“无法设置属性‘值’为空”
- unreal-engine4 - UE4 编辑器因“EXCEPTION_ACCESS_VIOLATION 写入地址”错误而崩溃
- azure - 在 azure 中创建 webjob 时出现 python 包安装错误