![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Custom predicate supportBoost , Boost.Test , Writing unit tests
|
Код |
---|
<#defineBOOST_TEST_MODULEexample #include<boost/test/included/unit_test.hpp> boolis_even(inti) { returni%2==0; } BOOST_AUTO_TEST_CASE(test_is_even) { BOOST_CHECK_PREDICATE(is_even,(14)); inti=17; BOOST_CHECK_PREDICATE(is_even,(i)); }> |
выход |
---|
<>example Running1testcase... test.cpp(13):errorin"test_is_even":checkis_even(i)hasfailedfor(17) ***1failuresisdetectedintestsuite"example"> |
Чтобы использовать второй слой, ваш предикат должен вернуться<boost::test_tools::predicate_result
>.
Этот класс инкапсулирует значение булевого результата вместе с любой ошибкой или информационным сообщением, которое вы решите сообщить.
Обычно вы строите экземпляр класса<boost::test_tools::predicate_result
>внутри функции предиката и возвращаете его по стоимости. Конструктор ожидает одного аргумента — значения булевого результата. Конструктор неявный, так что вы можете просто вернуть значение булева от вашего предиката и<boost::test_tools::predicate_result
>построен автоматически, чтобы держать ваше значение и пустое сообщение. Вы также можете присвоить булевое значение построенному экземпляру. Вы можете проверить текущее значение предиката, используя<operator!
>или напрямую получая доступ к публичному свойству только для чтения<p_predicate_value
>. Сообщение об ошибке хранится в публичном свойстве чтения-записи<p_message
>.
Код |
---|
<#defineBOOST_TEST_MODULEexample #include<boost/test/included/unit_test.hpp> boost::test_tools::predicate_result compare_lists(std::list<int>const&l1,std::list<int>const&l2) { if(l1.size()!=l2.size()) { boost::test_tools::predicate_resultres(false); res.message()<<"Different sizes ["<<l1.size()<<"!="<<l2.size()<<"]"; returnres; } returntrue; } BOOST_AUTO_TEST_CASE(test_list_comparison) { std::list<int>l1,l2; l1.push_back(1); l1.push_back(2); BOOST_TEST(compare_lists(l1,l2)); }> |
выход |
---|
<Running1testcase... test.cpp(28):errorin"test_list_comparizon":checkcompare_lists(l1,l2)hasfailed.Differentsizes[2!=0] ***1failuresisdetectedintestsuite"example"> |
Статья Custom predicate support раздела Boost.Test Writing unit tests может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Writing unit tests ::
реклама |