gpt4 book ai didi

c++ - 如何告诉 Boost.Test 在第一个失败的测试用例上停止?

转载 作者:可可西里 更新时间:2023-11-01 16:10:26 27 4
gpt4 key购买 nike

我在几个测试套件中订购了许多 Boost 测试用例。有些测试用例有一个,有些不止一个检查。

然而,当执行所有测试时,它们都会被执行——不管有多少失败或通过。我知道,我可以通过使用 BOOST_REQUIRE 而不是 BOOST_CHECK 来停止执行一个测试用例并进行多次检查。但这不是我想要的。

在第一个测试用例失败后,如何告诉 Boost 停止整个执行?与运行时解决方案(即运行时参数)相比,我更喜欢编译解决方案(例如,使用全局夹具实现)。

最佳答案

BOOST_REQUIRE 将停止测试套件中的当前测试用例,但继续进行其他测试。

当您要求“编译解决方案”时,我真的不明白您想要什么,但这里有一个应该有效的技巧。我使用 bool 值来检查整个测试套件的稳定性。如果它不稳定,即触发了 BOOST_REQUIRE,那么我将停止整个过程。

希望对您有所帮助。

//#include <...>

//FIXTURES ZONE
struct fixture
{
fixture():x(0.0),y(0.0){}
double x;
double y;
};

//HELPERS ZONE
static bool test_suite_stable = true;

void in_strategy(bool & stable)
{
if(stable)
{
stable = false;
}
else
{
exit();
}
}

void out_strategy(bool & stable)
{
if(!stable)
{
stable = true;
}
}

BOOST_AUTO_TEST_SUITE(my_test_suite)

//TEST CASES ZONE
BOOST_FIXTURE_TEST_CASE(my_test_case, fixture)
{
in_strategy(test_suite_stable);
//...
//BOOST_REQUIRE() -> triggered
out_strategy(test_suite_stable);
}

BOOST_FIXTURE_TEST_CASE(another_test_case, fixture)
{
in_strategy(test_suite_stable); //-> exit() since last triggered so stable = false
//...
//BOOST_REQUIRE()
out_strategy(test_suite_stable);
}

BOOST_TEST_SUITE_END()

贝诺特。

关于c++ - 如何告诉 Boost.Test 在第一个失败的测试用例上停止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10251375/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com