Использование Boost 1.46.1 в Windows x86, Android TI 2.2
Я определил свое собственное дерево наборов тестов, так как мне нужно, чтобы пользователь выбрал порядок тестов.хотя я знаю, что тесты должны быть независимыми, это требование.Дерево набора тестов было переопределено с использованием моей собственной реализации 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 для определенных вручную наборов тестов и кейсов.Аккуратный способ.
Есть несколько обходных путей:
- Приспособление Test Suite - может быть определено как первый и последний тест среди его детских наборов / кейсов.Однако это влияет на результаты теста и действует как отдельный тест, который на самом деле не является хорошим решением.
- Приспособление для тестового набора - оборачивая экземпляр с областью действия вокруг функции тестового набора.
Есть ли другое, более чистое и приятное решение моей проблемы?У меня действительно нет ресурсов, чтобы копаться в библиотеке 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;
}
Framework Unit Framework: руководство пользователяhttp://www.boost.org/doc/libs/1_46_1/libs/test/doc/html/utf/user-guide.html