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

Suite-level decorators

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_AUTO_TEST_SUITE>или третий аргумент к макросу<BOOST_FIXTURE_TEST_SUITE>.

Example: Test suite decorators

Код

<
#defineBOOST_TEST_MODULEdecorator_02
#include<boost/test/included/unit_test.hpp>
namespaceutf=boost::unit_test;
BOOST_AUTO_TEST_SUITE(suite1,*utf::label("trivial"))
 BOOST_AUTO_TEST_CASE(test_case1)
 {
   BOOST_TEST(true);
 }
 BOOST_AUTO_TEST_CASE(test_case2)
 {
   BOOST_TEST(1==1);
 }
BOOST_AUTO_TEST_SUITE_END()
>

выход

<
>decorator_02--run_test=@trivial
Running2testcases...
***Noerrorsdetected
>

Как декоратор тестового набора влияет на обработку тестовых блоков внутри него, зависит от декоратора и описывается для каждого декоратора в последующих разделах. Например, функция декоратора в приведенном выше примере заключается в том, что при фильтрации тестов по метки<"trivial">будет выполняться каждый тестовый блок в комплекте<suite1>.

Тестовый пакет C++ может быть закрыт и вновь открыт в одном и том же тестовом файле или охватывать более одного файла, и вам разрешено применять различные декораторы в каждой точке, где открывается тестовый пакет. Если это так, то в списке декораторов, применяемом к тестовому набору, указан союз декораторов в каждом месте. Вот пример.

Example: Decorators on multiple suite openings

Код

<
#defineBOOST_TEST_MODULEdecorator_03
#include<boost/test/included/unit_test.hpp>
namespaceutf=boost::unit_test;
BOOST_AUTO_TEST_SUITE(suite1,*utf::label("trivial"))
 BOOST_AUTO_TEST_CASE(test_case1)
 {
   BOOST_TEST(true);
 }
BOOST_AUTO_TEST_SUITE_END()
BOOST_AUTO_TEST_SUITE(suite1,*utf::label("simple"))
 BOOST_AUTO_TEST_CASE(test_case2)
 {
   BOOST_TEST(true);
 }
BOOST_AUTO_TEST_SUITE_END()
BOOST_AUTO_TEST_SUITE(suite1)
 BOOST_AUTO_TEST_CASE(test_case3)
 {
   BOOST_TEST(true);
 }
BOOST_AUTO_TEST_SUITE_END()
>

выход

<
>decorator_03--run_test=@trivial
Running3testcases...
***Noerrorsdetected
>decorator_03--run_test=@simple
Running3testcases...
***Noerrorsdetected
>

В приведенном выше примере объем тестового набора<suite1>открывается три раза. Это приводит к набору тестов, содержащему три тест-кейса и связанному с двумя декораторами<label>. Таким образом, выполнение тестов по этикетке<"trivial">, а также по этикетке<"simple">приводит к выполнению всех трех тестовых случаев из набора.

[Caution] Caution

Вышеприведенный синтаксис для декораторов требует, чтобы компилятор поддерживал вариадные макросы (добавлен в C++11). Если вы хотите, чтобы ваша тестовая программа также работала для компиляторов без вариадных макросов, используйте явный синтаксис декоратора, описанный ниже.


PrevUpHomeNext

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




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



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


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 18:57:29/0.006889820098877/0