![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Test cases without parametersBoost , Boost.Test , Test cases
|
Код |
---|
<#defineBOOST_TEST_MODULEexample #include<boost/test/included/unit_test.hpp> BOOST_AUTO_TEST_CASE(free_test_function) /* Compare with void free_test_function() */ { BOOST_TEST(true/* test assertion */); }> |
выход |
---|
<>example Running1testcase... ***Noerrorsdetected> |
С помощью этого макроса вам не нужно выполнять какие-либо другие шаги регистрации. Макрос создает и регистрирует тестовый случай с именем<free_test_function
>автоматически.
.Unit Test Frameworkпозволяет вручную создавать тестовый корпус без параметров на основе нулевых свободных функций, объектов нулевых функций (в том числе созданных с<boost::bind
>и нулевых<boost::function
>экземпляров). Для этого воспользуйтесь макросом<BOOST_TEST_CASE
>:
BOOST_TEST_CASE(test_function);
<BOOST_TEST_CASE
>создает экземпляр класса<boost::unit_test::test_case
>и возвращает указатель на построенный экземпляр. Название тест-кейса выводится из макрос аргумента test_function. Если вы предпочитаете назначать другое имя тестового случая, вы должны использовать базовый интерфейс make_test_case. Для регистрации нового теста используйте метод<test_suite::add
>. Как создание тестового корпуса, так и регистрация выполняются вфункции инициализации тестового модуля.
Вот самый простой пример зарегистрированного вручную теста. Единый тест-кейс создается и регистрируется в рамках процедуры инициализации тестового модуля. Обратите внимание, что имя свободной функции передается по адресу макрос<BOOST_TEST_CASE
>.
Код |
---|
<#include<boost/test/included/unit_test.hpp> usingnamespaceboost::unit_test; voidfree_test_function() { BOOST_TEST(true/* test assertion */); } test_suite*init_unit_test_suite(int/*argc*/,char*/*argv*/[]) { framework::master_test_suite(). add(BOOST_TEST_CASE(&free_test_function)); return0; }> |
выход |
---|
<>example Running1testcase... ***Noerrorsdetected> |
Тестовый пример может быть реализован как метод класса. В этом случае указатель на экземпляр класса должен быть привязан к методу испытания для создания тестового случая. Вы можете использовать один и тот же экземпляр класса для нескольких тестовых случаев.Unit Test Frameworkне является собственностью экземпляра класса, и вы должны управлять экземпляром класса самостоятельно.
![]() |
Warning |
---|---|
Пример класса не может быть определен в области функции инициализации, поскольку он становится недействительным, как только выполнение теста выходит из него. Он должен быть определен статически / глобально или управляться с помощью общего указателя. |
Код |
---|
<#include<boost/test/included/unit_test.hpp> #include<boost/bind.hpp> usingnamespaceboost::unit_test; classtest_class { public: voidtest_method1() { BOOST_TEST(true/* test assertion */); } voidtest_method2() { BOOST_TEST(false/* test assertion */); } }; test_suite*init_unit_test_suite(int/*argc*/,char*/*argv*/[]) { boost::shared_ptr<test_class>tester(newtest_class); framework::master_test_suite(). add(BOOST_TEST_CASE(boost::bind(&test_class::test_method1,tester))); framework::master_test_suite(). add(BOOST_TEST_CASE(boost::bind(&test_class::test_method2,tester))); return0; }> |
выход |
---|
<>example Running2testcases... test.cpp(22):error:in"boost::bind( &test_class::test_method2, tester )":checkfalsehasfailed ***1failureisdetectedinthetestmodule"Master Test Suite"> |
Статья Test cases without parameters раздела Boost.Test Test cases может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Test cases ::
реклама |