【发布时间】:2013-07-05 14:21:16
【问题描述】:
我使用 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() );
}
在这种情况下,如果 test1 失败,程序将在 test2 中崩溃。我知道我可以在每次测试开始时添加BOOST_REQUIRE( g_class )。但是还有其他方法吗?
【问题讨论】:
-
单元测试不应该依赖于执行的顺序。这不是 Boost.Test 的限制,而是一般的单元测试原则。要排除常见的东西,您可能需要使用固定装置
-
但是 test1 总是先执行 test2 对吧?
-
我猜是这样,但你不应该依赖它。您应该以一种无论执行顺序如何都能正常工作的方式编写测试
-
除非我用随机开关调用它——不时尝试这是一件好事
标签: c++ boost-test