在 Windows x86、Android TI 2.2 上使用 Boost 1.46.1
我已经定义了自己的测试套件树,因为我需要用户选择测试的顺序。虽然我知道测试应该是独立的,但这是一个要求。测试套件树是使用我自己的test_suite* init_unit_test_suite(int, char**)
.
对于自动化测试用例和自动化测试套件,有 Boost 宏:BOOST_FIXTURE_TEST_CASE
和BOOST_FIXTURE_TEST_SUITE( suite_name, F )
. 这些宏将函数注册到framework::master_test_suite()
,在这种情况下这是不希望的行为。
全局夹具 ( BOOST_GLOBAL_FIXTURE(fixure_name)
) 在手动测试套件定义中不受影响。
我想在 Boost Unit Testing Framework 中使用固定装置来手动定义测试套件和用例。一个整洁的方式。
有一些解决方法:
- 测试套件夹具 - 可以定义为其子套件/案例中的第一个和最后一个测试。然而,这会影响测试结果并作为单独的测试,这并不是一个很好的解决方案。
- 测试用例夹具 - 通过在测试用例函数周围包装一个作用域实例。
有没有其他更清洁和更好的解决方案来解决我的问题?我真的没有资源可以深入研究 Boost 库。另一方面,我不想显着降低我这边代码的质量和可读性。
问候, LK
#include <boost/bind.hpp>
#include <boost/smart_ptr.hpp>
#include <boost/test/unit_test.hpp>
using namespace boost::unit_test;
BOOST_GLOBAL_FIXTURE(GFixture);
test_suite* init_unit_test_suite( int, char** )
{
test_suite* ts1 = BOOST_TEST_SUITE( "Suite1" );
boost::shared_ptr<TestClass1> test1 ( new TestClass1 );
ts1->add( BOOST_TEST_CASE( boost::bind(&TestClass1::Run, test1)));
boost::shared_ptr<TestClass2> test2 ( new TestClass2 );
ts1->add( BOOST_TEST_CASE( boost::bind(&TestClass2::Run, test2)));
boost::shared_ptr<TestClass3> test3 ( new TestClass3);
ts1->add( BOOST_TEST_CASE( boost::bind(&TestClass3::Run, test3)));
framework::master_test_suite().add( ts1 );
return 0;
}
单元测试框架:用户指南
http://www.boost.org/doc/libs/1_46_1/libs/test/doc/html/utf/user-guide.html