C++ 测试如何创建;测试依赖性“;
我使用boost.test作为测试套件。我想知道是否有可能做一些测试的先决条件。比如说C++ 测试如何创建;测试依赖性“;,c++,boost-test,C++,Boost Test,我使用boost.test作为测试套件。我想知道是否有可能做一些测试的先决条件。比如说 uniqut_ptr< MyClass > g_class; BOOST_AUTO_TEST_CASE( test1 ) { BOOST_REQUIRE_NO_THROW( g_class = CreateMyClass() ); } BOOST_AUTO_TEST_CASE( test2 ) { // This test need the test1 as passed
uniqut_ptr< MyClass > g_class;
BOOST_AUTO_TEST_CASE( test1 )
{
BOOST_REQUIRE_NO_THROW( g_class = CreateMyClass() );
}
BOOST_AUTO_TEST_CASE( test2 )
{
// This test need the test1 as passed
BOOST_REQUIRE( g_class->doSomething() );
}
uniqut_ptrg_类;
增压自动测试案例(测试1)
{
BOOST_REQUIRE_NO_THROW(g_class=CreateMyClass());
}
增压自动测试案例(测试2)
{
//此测试需要通过test1
增强需求(g_类->doSomething());
}
在这种情况下,如果test1失败,程序将在test2中崩溃。我知道我可以在每次测试开始时添加
BOOST\u REQUIRE(g\u类)
。但是还有其他方法吗?我看到当你要求某件事情是真实的时,可以使用boostREQUIRE
,所以把REQUIRE放在每个测试的顶部。
或者考虑使用测试夹具并在安装函数中进行设置。有一些例子
闻起来好像你在测试中试图使用一个全局变量,所以它们可能会以可怕的方式交互。全局数据麻烦太多了。单元测试不应该依赖于执行顺序。这不是Boost.Test的限制,而是单元测试的一般原则。为了解决常见问题,您可能需要使用fixtures,但是test1总是在test2的第一个执行吗?我想是的,但您不应该依赖它。您应该以一种无论执行顺序如何都能工作的方式编写测试,除非我使用随机开关调用它——这是一件经常尝试的好事情