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

Checkpoints for accurate failure location

Boost , Boost.Test , Tools supports for logging

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

В большинстве случаевЕдиничная система тестированияне может обеспечить точное местоположение, где происходит системная ошибка или выкидывает непойманное исключение C++. Чтобы быть в состоянии определить его как можно ближеЕдиная тестовая системаотслеживаетконтрольно-пропускные пункты— местоположение, через которое проходил испытательный модуль.

.Unit Test Frameworkотслеживает контрольно-пропускные пункты на входе, выходе, инициализации крепления и в точке вызова испытательного инструмента.

Любые другие контрольные точки должны быть введены вами вручную, если вам нужно больше детализации в случае, если во время теста произойдет фатальная ошибка..Unit Test Frameworkпредоставляет для этой цели два макроса:

Контрольные точки также удобны для проверок в циклах, поскольку они могут предоставить больше информации о возникновении сбоя (хотя и заменены [ссылки boost_test.test_output.test_tools_support_for_logging.contexts contexts]).

Named checkpoints

Макро<BOOST_TEST_CHECKPOINT>предназначен для использования для инъекцийпо имениположение контрольно-пропускного пункта. Макросигнатура выглядит следующим образом:

BOOST_TEST_CHECKPOINT(checkpoint_message);

Сообщение, отформатированное в позиции контрольной точки, сохраняется и сообщается функциями регистрации исключений (если таковые имеются). Аналогично<BOOST_TEST_MESSAGE>сообщение может быть отформатировано из любых стандартных компонентов, совместимых с выходным потоком.

Example: BOOST_TEST_CHECKPOINT usage

Код

<
#defineBOOST_TEST_MODULEexample
#include<boost/test/included/unit_test.hpp>
externvoidfoo(inti);
BOOST_AUTO_TEST_CASE(test_external_interface)
{
 for(inti=3;i>=0;i--){
   BOOST_TEST_CHECKPOINT("Calling foo with i="<<i);
   foo(i);
 }
}
voidgoo(int)
{
}
voidfoo(inti)
{
   goo(2/(i-1));
}
>

выход

<
>example
Running1testcase...
unknownlocation(0):fatalerrorin"test_external_interface":signal:integerdividebyzero;addressoffailinginstruction:0x00048090
test.cpp(9):lastcheckpoint:Callingfoowithi=1
***1failuresisdetectedintestsuite"example"
>

Unnamed checkpoints

Макро<BOOST_TEST_PASSPOINT>предназначен для использования для введенияненазванногоположения контрольно-пропускного пункта. Макросигнатура выглядит следующим образом:

BOOST_TEST_PASSPOINT();

В отличие от макроса<BOOST_TEST_CHECKPOINT>этот макрос не требует какого-либо сообщения. Это простой маркер «было там», который записывает имя файла и код номера строки.

Example: BOOST_TEST_PASSPOINT usage

Код

<
#defineBOOST_TEST_MODULEexample
#include<boost/test/included/unit_test.hpp>
voidfoo(int){}
BOOST_AUTO_TEST_CASE(test_case)
{
 int*p=0;
 BOOST_TEST_PASSPOINT();
 ++p;
 BOOST_TEST_PASSPOINT();
 ++p;
 BOOST_TEST_PASSPOINT();
 foo(*p);
}
>

выход

<
>example
Running1testcase...
unknownlocation(0):fatalerrorin"test_case":memoryaccessviolationataddress:0x00000008:nomappingatfaultaddress
test.cpp(16):lastcheckpoint
***1failuresisdetectedintestsuite"example"
>

PrevUpHomeNext

Статья Checkpoints for accurate failure location раздела Boost.Test Tools supports for logging может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Tools supports for logging ::


реклама


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

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