Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 测试如何创建;测试依赖性“;_C++_Boost Test - Fatal编程技术网

C++ 测试如何创建;测试依赖性“;

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

我使用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
    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类)
。但是还有其他方法吗?

我看到当你要求某件事情是真实的时,可以使用boost
REQUIRE
,所以把REQUIRE放在每个测试的顶部。 或者考虑使用测试夹具并在安装函数中进行设置。有一些例子
闻起来好像你在测试中试图使用一个全局变量,所以它们可能会以可怕的方式交互。全局数据麻烦太多了。

单元测试不应该依赖于执行顺序。这不是Boost.Test的限制,而是单元测试的一般原则。为了解决常见问题,您可能需要使用fixtures,但是test1总是在test2的第一个执行吗?我想是的,但您不应该依赖它。您应该以一种无论执行顺序如何都能工作的方式编写测试,除非我使用随机开关调用它——这是一件经常尝试的好事情