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

Master Test Suite

Boost , Boost.Test , Test suite

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

Как определено в разделе введения, основной тестовый набор представляет собой корневой узел тестируемого дерева. Каждый испытательный модуль, построенный с помощьюЕдиная тестовая системавсегда имеет набор основных тестов.Единая система испытанийСохраняйте экземпляр мастер-теста внутри. Все остальные тестовые блоки зарегистрированы как прямые или косвенные дети мастер-теста.

namespace boost {
namespace unit_test {
class master_test_suite_t : public test_suite
{
public:
  int argc;
  char** argv;
};
} // namespace unit_test
} // namespace boost

Чтобы получить доступ к одному экземпляру основного набора тестов, используйте следующий интерфейс:

namespace boost {
namespace unit_test {
namespace framework {
master_test_suite_t& master_test_suite();
} // namespace framework
} // namespace unit_test
} // namespace boost
Command line arguments access interface

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

boost::unit_test::framework::master_test_suite().argc
boost::unit_test::framework::master_test_suite().argv

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

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

Example: Command line access in initialization function

Код

<
#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*/[])
{
 if(framework::master_test_suite().argc>1)
   return0;
 framework::master_test_suite().
   add(BOOST_TEST_CASE(&free_test_function));
 return0;
}
>

выход

<
>example1
Testsetuperror:testtreeisempty
>
Naming the Master test suite

Мастер-тест создается с именем по умолчанию.Магистерский набор. Существует два способа сброса имени на другое значение: с помощью макроса<BOOST_TEST_MODULE>и из функции инициализации тестового модуля. Прежний используется для тестовых модулей, которые не имеют вручную реализованной функции инициализации. Следующие примеры иллюстрируют эти методы.

Example: Naming master test suite using the macro BOOST_TEST_MODULE

Код

<
#defineBOOST_TEST_MODULEmymastertestsuitename
#include<boost/test/included/unit_test.hpp>
BOOST_AUTO_TEST_CASE(free_test_function)
{
 BOOST_TEST(true/* test assertion */);
}
>

выход

<
>example--log_level=test_suite
Running1testcase...
Enteringtestsuite"my master test suite name"
Enteringtestcase"free_test_function"
Leavingtestcase"free_test_function";testingtime:1ms
Leavingtestsuite"my master test suite name"
***Noerrorsdetected
>

Если макро<BOOST_TEST_MODULE>определено, функция инициализации тестового модуляавтоматически генерируется, и макро значение становится именем основного набора тестов. Название может включать пробелы.

Example: Naming master test suite explicitly in the test module initialization function

Код

<
#include<boost/test/included/unit_test.hpp>
usingnamespaceboost::unit_test;
BOOST_AUTO_TEST_CASE(free_test_function)
{
 BOOST_TEST(true/* test assertion */);
}
test_suite*init_unit_test_suite(int/*argc*/,char*/*argv*/[])
{
 framework::master_test_suite().p_name.value="my master test suite name";
 return0;
}
>

выход

<
>example--log_level=test_suite
Running1testcase...
Enteringtestsuite"my master test suite name"
Enteringtestcase"free_test_function"
Leavingtestcase"free_test_function";testingtime:1ms
Leavingtestsuite"my master test suite name"
***Noerrorsdetected
>

Без флагов<BOOST_TEST_MAIN>и<BOOST_TEST_MODULE>функция инициализации испытательного модуля должна быть реализована вручную. Имя главного тестового набора может быть сброшено в любой точке этой функции.


PrevUpHomeNext

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




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



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


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 18:55:18/0.0093991756439209/1