Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Explicit decorator declaration

Boost , Boost.Test , Decorators

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Существует еще один способ ассоциирования декоратора с тестовыми блоками. Макро<BOOST_TEST_DECORATOR>указывает на то, что его набор декораторов должен быть применен к испытательному блоку илипоследовательность тестового корпуса, которая немедленно следует за декларацией.

Example: explicit decorator declaration

Код

<
#defineBOOST_TEST_MODULEdecorator_00
#include<boost/test/included/unit_test.hpp>
#include<boost/test/data/test_case.hpp>
namespaceutf=boost::unit_test;
namespacedata=boost::unit_test::data;
BOOST_TEST_DECORATOR(*utf::description("with description"))
BOOST_DATA_TEST_CASE(test_1,data::xrange(4))
{
   BOOST_TEST(sample>=0);
}
>

выход

<
>decorator_00--list_content
test_1*:withdescription
test_1*:withdescription
test_1*:withdescription
test_1*:withdescription
>

В приведенном выше примере декоратор применяется ктест-кейсу, управляемому данными. Макро<BOOST_DATA_TEST_CASE>не может рассматривать декоратора как один из аргументов, поэтому используется явное заявление декоратора. Макро<BOOST_DATA_TEST_CASE>генерирует последовательность из 4 тестовых случаев. На каждый из них наносится декоратор.

Другой пример использования явной декларации декоратора — это когда вы планируете, чтобы ваша тестовая программа компилировалась также на компиляторах без вариадных макросов. В этом случае рекомендуется использовать более многословный синтаксис. Он кратко изложен в следующей таблице:

Испытательный блок для регистрации

Краткий синтаксис

Универсальный синтаксис

Проверка

<
BOOST_AUTO_TEST_CASE(test_case,*decor1()*decor2())
{
 // assertions
}
>
<
BOOST_TEST_DECORATOR(*decor1()*decor2())
BOOST_AUTO_TEST_CASE(test_case)
{
 // assertions
}
>

Испытательный корпус с креплением

<
BOOST_FIXTURE_TEST_CASE(test_case,Fx,*decor1()*decor2())
{
 // assertions
}
>
<
BOOST_TEST_DECORATOR(*decor1()*decor2())
BOOST_FIXTURE_TEST_CASE(test_case,Fx)
{
 // assertions
}
>

Тестовый набор

<
BOOST_AUTO_TEST_SUITE(test_suite,*decor1()*decor2())
 // test units
BOOST_AUTO_TEST_SUITE_END()
>
<
BOOST_TEST_DECORATOR(*decor1()*decor2())
BOOST_AUTO_TEST_SUITE(test_suite)
 // test units
BOOST_AUTO_TEST_SUITE_END()
>

Тестовый комплект с креплением

<
BOOST_FIXTURE_TEST_SUITE(test_suite,Fx,*decor1()*decor2())
 // test units
BOOST_AUTO_TEST_SUITE_END()
>
<
BOOST_TEST_DECORATOR(*decor1()*decor2())
BOOST_FIXTURE_TEST_SUITE(test_suite,Fx)
 // test units
BOOST_AUTO_TEST_SUITE_END()
>

тестовый случай, основанный на данных

<
// not doable
>
<
BOOST_TEST_DECORATOR(*decor1()*decor2())
BOOST_DATA_TEST_CASE(test_case,data,var)
{
 // assertions
}
>

шаблон тестового случая

<
// not doable
>
<
BOOST_TEST_DECORATOR(*decor1()*decor2())
BOOST_AUTO_TEST_CASE_TEMPLATE(test_case,T,type_list)
{
 // assertions
}
>

Шаблон испытания с креплением

<
// not doable
>
<
BOOST_TEST_DECORATOR(*decor1()*decor2())
BOOST_FIXTURE_TEST_CASE_TEMPLATE(test_case,T,type_list,Fx)
{
 // assertions
}
>

На протяжении всего напоминания этой документации мы используем только краткий синтаксис.


PrevUpHomeNext

Статья Explicit decorator declaration раздела Boost.Test Decorators может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Decorators ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 19:44:18/0.0087649822235107/1