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

Test cases without parameters

Boost , Boost.Test , Test cases

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

Наиболее распространенным сценарием является то, что вы хотите написать тест без каких-либо параметров.Единая система испытанийпредоставляет вам как автоматические, так и ручные API-интерфейсы регистрации для объявления такого теста.

Automated registration

Для декларирования тестового случая без параметров, который регистрируется вместо реализации, используют макрос<BOOST_AUTO_TEST_CASE>.

BOOST_AUTO_TEST_CASE(test_case_name);

Этот API разработан, чтобы точно имитировать синтаксис нулевой декларации функций. По сравнению со свободной функцией все, что вам нужно сделать, это пропустить тип результата и скобки и завернуть имя тестового случая в BOOST_AUTO_TEST_CASE:

Example: Nullary function based test case with automated registration

Код

<
#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>автоматически.

Manual registration

.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>.

Example: Nullary free function manually registered

Код

<
#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] Warning

Пример класса не может быть определен в области функции инициализации, поскольку он становится недействительным, как только выполнение теста выходит из него. Он должен быть определен статически / глобально или управляться с помощью общего указателя.

Example: Nullary method of a class bound to shared class instance and manually registered

Код

<
#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"
>

PrevUpHomeNext

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




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



:: Главная :: Test cases ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 19:23:45/0.0074779987335205/0