![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Expected failures specificationBoost , Boost.Test , Writing unit tests
|
![]() |
Note |
---|---|
Если неисправное утверждение фиксируется и передается, в то время как спецификация ожидаемых отказов все еще присутствует, количество отказов становится меньше, чем ожидалось. Об испытании будет сообщено как пройденное; вместо этого будет выпущено предупреждающее сообщение. |
Декоратор<expected_failures
>определяет количество утверждений, которые, как ожидается, потерпят неудачу в соответствующем испытательном блоке. Сообщается о неудаче, когда число неудачных утверждений превышает заявленное ожидаемое число неудач. Если количество неудачных утверждений меньше, чем количество ожидаемых неудач, сообщение сообщается. Общее количество ожидаемых сбоев для данного набора<S
>является суммой заявленных ожидаемых сбоев в<S
>и суммой ожидаемых сбоев во всех вложенных тестовых блоках:
Код |
---|
<#defineBOOST_TEST_MODULEdecorator_10 #include<boost/test/included/unit_test.hpp> namespaceutf=boost::unit_test; BOOST_AUTO_TEST_SUITE(suite1, *utf::expected_failures(1)) BOOST_AUTO_TEST_CASE(test1, *utf::expected_failures(2)) { BOOST_TEST(false); BOOST_TEST(false); } BOOST_AUTO_TEST_CASE(test2) { BOOST_TEST(false); BOOST_TEST(false); } BOOST_AUTO_TEST_SUITE_END()> |
выход |
---|
<>decorator_10 Running2testcases... test.cpp(11):error:in"suite1/test1":checkfalsehasfailed test.cpp(12):error:in"suite1/test1":checkfalsehasfailed test.cpp(17):error:in"suite1/test2":checkfalsehasfailed test.cpp(18):error:in"suite1/test2":checkfalsehasfailed ***4failuresaredetected(3failuresareexpected)inthetestmodule"decorator_10" >decorator_10--run_test=suite1/test1 Running1testcase... test.cpp(11):error:in"suite1/test1":checkfalsehasfailed test.cpp(12):error:in"suite1/test1":checkfalsehasfailed ***Noerrorsdetected> |
В приведенном выше примере мы сначала запускаем все тестовые случаи с четырьмя неудачными утверждениями. Общее количество ожидаемых отказов составляет 3:1 (для испытания<suite1
>) +2 (для<test1
>). Поскольку ожидаемое количество отказов превышено, сообщается об ошибке. Во втором случае мы запускаем только тестовый случай<suite1/test1
>: происходят два сбоя, ожидаются два сбоя, поэтому об ошибке не сообщается.
![]() |
Caution |
---|---|
Это использование считается обесцененным. Пожалуйста, подумайте об использовании< |
Для обратной совместимости можно указать ожидаемые сбои с<BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES
>до определения тестового случая.
BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES(test_case_name, number_of_expected_failures);
Вы можете использовать этот макрос как в области файлов, так и в тестовом наборе. Кроме того, вы можете использовать его, даже если название тестовых блоков совпадает в разных наборах тестов. Спецификация ожидаемых отказов применяется к испытательному блоку, принадлежащему к тому же набору тестов, где находится<BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES
>.
Код |
---|
<#defineBOOST_TEST_MODULEexample #include<boost/test/included/unit_test.hpp> BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES(my_test1,1) BOOST_AUTO_TEST_CASE(my_test1) { BOOST_TEST(2==1); } BOOST_AUTO_TEST_SUITE(internal) BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES(my_test1,2) BOOST_AUTO_TEST_CASE(my_test1) { BOOST_CHECK_EQUAL(sizeof(int),sizeof(char)); BOOST_CHECK_EQUAL(sizeof(int*),sizeof(char)); } BOOST_AUTO_TEST_SUITE_END()> |
выход |
---|
<>example--report_level=short Running2testcases... test.cpp(10):errorin"my_test1":check2==1hasfailed test.cpp(21):errorin"my_test1":checksizeof(int)==sizeof(char)hasfailed[4!=1] test.cpp(22):errorin"my_test1":checksizeof(int*)==sizeof(char)hasfailed[4!=1] Testsuite"example"passedwith: 3assertionsoutof3failed 3failuresexpected 2testcasesoutof2passed> |
![]() |
Caution |
---|---|
Это использование считается обесцененным. Пожалуйста, подумайте об использовании< |
Чтобы установить значение ожидаемых отказов для зарегистрированного вручную испытательного блока, передайте его в качестве второго аргумента для вызова<test_suite::add
>во время регистрации испытательного блока.
Код |
---|
<#include<boost/test/included/unit_test.hpp> usingnamespaceboost::unit_test; voidfree_test_function() { BOOST_TEST(2==1); } test_suite*init_unit_test_suite(int,char*[]) { framework::master_test_suite(). add(BOOST_TEST_CASE(&free_test_function),2); return0; }> |
выход |
---|
<>example--log_level=message Running1testcase... test.cpp(8):errorin"free_test_function":check2==1hasfailed Testcasehaslessfailuresthenexpected ***Noerrorsdetected> |
Статья Expected failures specification раздела Boost.Test Writing unit tests может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Writing unit tests ::
реклама |