![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Test case fixtureBoost , Boost.Test , Fixtures
|
![]() |
Note |
---|---|
Вы не можете получить доступ к частным членам светильника, но тогда зачем вам делать что-то личное? |
Код |
---|
<#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
decorator
Используя декоратор<fixture
>, можно:
![]() |
Note |
---|---|
Используя подход декоратора, невозможно получить доступ к элементам светильника (в случае, если светильник реализован как класс) |
Если все тестовые случаи в тестовом поддереве требуют одного и того же крепежа (вы можете группировать тестовые случаи в тестовом наборе на основе требуемого крепежа), вы можете сделать еще один шаг к автоматизации назначения испытательного крепежа. Чтобы назначить один и тот же общий прибор для всех тестовых случаев в тестовом наборе, используйте макрос<BOOST_FIXTURE_TEST_SUITE
>вместо макроса<BOOST_AUTO_TEST_SUITE
>для автоматизированного создания и регистрации тестового набора.
BOOST_FIXTURE_TEST_SUITE(suite_name, fixture_name);
Опять же, единственное отличие от макро<BOOST_AUTO_TEST_SUITE
>использования заключается в наличии дополнительного аргумента - названия приспособления. И теперь у вас есть не только прямой доступ к общественным и защищенным членам светильника, но и не нужно ссылаться на название светильника в определении тестового случая. Всем тестовым случаям автоматически назначается один и тот же прибор.
![]() |
Tip |
---|---|
При необходимости можно сбросить крепеж для конкретного тестового случая с помощью макроса< |
![]() |
Note |
---|---|
[] [][] []. Иными словами, если только не перезагрузка другим< |
Код |
---|
<#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 |
---|---|
Конструктор и разрушитель светильника вызываются для каждого тестового случая (состояние светильника не делится между тестовыми случаями). |
Статья Test case fixture раздела Boost.Test Fixtures может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
реклама |