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

Test case fixture

Boost , Boost.Test , Fixtures

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

Аиспытательный стендявляется приспособлением, потребляемым тестовым корпусом: приспособление<setup>вызывается до исполнения тестового корпуса, а приспособление<teardown>вызывается после того, как тестовый корпус закончил свое исполнение, независимо от его состояния исполнения.

Система испытанийобеспечивает несколько способов определения светильников для испытательных корпусов, каждый из которых обладает своими свойствами:

  • декларирование приспособления для одного испытательного корпуса, позволяющее испытательному корпусу получить доступ к членам приспособления,
  • - объявление одного или нескольких приборов (устройств) для одного тестового случая без доступа к элементам и с гибким интерфейсом;
  • декларирование приспособления для группы испытательных корпусов, определенных поддеревом, с доступом к членам приспособления.

Single test case fixture

Для обозначения приспособления, прикрепленного к одному конкретному испытательному корпусу, доступны следующие два метода:

  • использование макроса<BOOST_FIXTURE_TEST_CASE>вместо<BOOST_AUTO_TEST_CASE>, который позволяет получить доступ к элементам светильника;
  • (b) использование декоратора<fixture>, который не позволяет получить доступ к элементам, но позволяет определить несколько приспособлений для одного тестового случая.
Fixture with BOOST_FIXTURE_TEST_CASE

<BOOST_FIXTURE_TEST_CASE>служит в качестве декларации испытательного случая с крепежом и предназначен для использования вместо декларации испытательного случая с<BOOST_AUTO_TEST_CASE>:

BOOST_FIXTURE_TEST_CASE(test_case_name, fixture_name);

Единственным отличием от макро<BOOST_AUTO_TEST_CASE>является наличие дополнительного аргумента<fixture_name>. Общественные и охраняемые элементы светильника доступны непосредственно из корпуса испытательного корпуса. Только один прибор может быть прикреплен к испытательному корпусу.

[Note] Note

Вы не можете получить доступ к частным членам светильника, но тогда зачем вам делать что-то личное?

Example: Per test case fixture

Код

<
#defineBOOST_TEST_MODULEexample
#include<boost/test/included/unit_test.hpp>
structF{
 F():i(0){BOOST_TEST_MESSAGE("setup fixture");}
 ~F()       {BOOST_TEST_MESSAGE("teardown fixture");}
 inti;
};
BOOST_FIXTURE_TEST_CASE(test_case1,F)
{
 BOOST_TEST(i==1);
 ++i;
}
BOOST_FIXTURE_TEST_CASE(test_case2,F)
{
 BOOST_CHECK_EQUAL(i,1);
}
BOOST_AUTO_TEST_CASE(test_case3)
{
 BOOST_TEST(true);
}
>

выход

<
>example--log_level=message
Running3testcases...
setupfixture
test.cpp(13):errorin"test_case1":checki==1hasfailed
teardownfixture
setupfixture
test.cpp(19):errorin"test_case2":checki==1hasfailed[0!=1]
teardownfixture
***2failuresaredetectedintestsuite"example"
>

В этом примере только<test_case1>и<test_case2>закреплены<F>. Вы все равно должны ссылаться на название светильника в каждом тестовом случае.В этомразделе объясняется, каким образом один и тот же светильник может быть объявлен для поддеревьев под набором для испытаний.

Fixture with fixture decorator

Используя декоратор<fixture>, можно:

  • прикрепить несколько приспособлений к уникальному испытательному корпусу
  • использовать гибкий интерфейс крепления (см.здесь)
[Note] Note

Используя подход декоратора, невозможно получить доступ к элементам светильника (в случае, если светильник реализован как класс)

Fixture for a complete subtree

Если все тестовые случаи в тестовом поддереве требуют одного и того же крепежа (вы можете группировать тестовые случаи в тестовом наборе на основе требуемого крепежа), вы можете сделать еще один шаг к автоматизации назначения испытательного крепежа. Чтобы назначить один и тот же общий прибор для всех тестовых случаев в тестовом наборе, используйте макрос<BOOST_FIXTURE_TEST_SUITE>вместо макроса<BOOST_AUTO_TEST_SUITE>для автоматизированного создания и регистрации тестового набора.

BOOST_FIXTURE_TEST_SUITE(suite_name, fixture_name);

Опять же, единственное отличие от макро<BOOST_AUTO_TEST_SUITE>использования заключается в наличии дополнительного аргумента - названия приспособления. И теперь у вас есть не только прямой доступ к общественным и защищенным членам светильника, но и не нужно ссылаться на название светильника в определении тестового случая. Всем тестовым случаям автоматически назначается один и тот же прибор.

[Tip] Tip

При необходимости можно сбросить крепеж для конкретного тестового случая с помощью макроса<BOOST_FIXTURE_TEST_CASE>. Точно так же вы можете сбросить светильник для определенного набора тестов, используя<BOOST_FIXTURE_TEST_SUITE>.

[Note] Note

[] [][] []. Иными словами, если только не перезагрузка другим<BOOST_FIXTURE_TEST_SUITE>или<BOOST_FIXTURE_TEST_CASE>Определение одного и того же приспособления присваивается всем испытательным корпусам испытательного набора, включая те, которые относятся к субтестовым наборам.

Example: Test suite level fixture

Код

<
#defineBOOST_TEST_MODULEfixture_02
#include<boost/test/included/unit_test.hpp>
structF{
 F():i(0){BOOST_TEST_MESSAGE("setup fixture");}
 ~F()       {BOOST_TEST_MESSAGE("teardown fixture");}
 inti;
};
BOOST_FIXTURE_TEST_SUITE(s,F)
 BOOST_AUTO_TEST_CASE(test_case1)
 {
   BOOST_TEST_MESSAGE("running test_case1");
   BOOST_TEST(i==0);
 }
 BOOST_AUTO_TEST_CASE(test_case2)
 {
   BOOST_TEST_MESSAGE("running test_case2");
   BOOST_TEST(i==0);
 }
BOOST_AUTO_TEST_SUITE_END()
>

выход

<
>fixture_02--log_level=message
Running2testcases...
setupfixture
runningtest_case1
teardownfixture
setupfixture
runningtest_case2
teardownfixture
***Noerrorsdetected
>
[Caution] Caution

Конструктор и разрушитель светильника вызываются для каждого тестового случая (состояние светильника не делится между тестовыми случаями).



еще можно определить класс, наследуемый от нескольких светильников, которые будут действовать как прокси-устройство.


PrevUpHomeNext

Статья Test case fixture раздела Boost.Test Fixtures может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Fixtures ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-07-04 21:57:23/0.0076930522918701/0