【发布时间】:2009-07-23 16:12:21
【问题描述】:
我目前正在学习如何使用 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 是根套件的子套件,默认情况下被命名为“主测试套件”。默认日志只显示根套件,这不是我所期望的,我可以处理它:)
您可以通过定义 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);
}
【问题讨论】:
-
我很高兴我找到了这个,但我完全被这种行为吓到了。由于您只能使用一次
BOOST_TEST_MODULE,这是否意味着每个单元测试可执行文件基本上只有一个套件?并且所有测试失败都将作为该套件的成员报告,没有子套件名称?当然,我在这里遗漏了一些东西。编辑:格式化
标签: c++ unit-testing boost