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

Reported information

Boost , Boost.Test , Writing unit tests

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

Failure message, why?

Когда утверждение не удается, регистрируется сообщение, содержащее:

  • Тело заявления, которое провалилось
  • Название файла и строка неудавшегося утверждения
  • Название тестового случая, содержащего это утверждение

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

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

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

Информация, извлеченная из журналов, предполагает следующий факт:

[Tip] Tip

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

Default reporting

Когда утверждение терпит неудачу,<BOOST_TEST>сообщает детали и значения операндов<statement>, которые приводят к неудаче.

Example: BOOST_TEST reporting

Код

<
#defineBOOST_TEST_MODULEboost_test_macro3
#include<boost/test/included/unit_test.hpp>
BOOST_AUTO_TEST_CASE(test_op_reportings)
{
 inta=13,b=12;
 BOOST_TEST(a==b);
 BOOST_TEST(a<b);
 BOOST_TEST(a-1<b);
 BOOST_TEST(b>a-1);
}
>

выход

<
>./boost_test_macro3--log_level=all
Running1testcase...
Enteringtestmodule"boost_test_macro3"
test.cpp(12):Enteringtestcase"test_op_reportings"
test.cpp(15):error:in"test_op_reportings":checka==bhasfailed[13!=12]
test.cpp(16):error:in"test_op_reportings":checka<bhasfailed[13>=12]
test.cpp(17):error:in"test_op_reportings":checka-1<bhasfailed[13-1>=12]
test.cpp(18):error:in"test_op_reportings":checkb>a-1hasfailed[12<=12]
test.cpp(12):Leavingtestcase"test_op_reportings";testingtime:484us
Leavingtestmodule"boost_test_macro3";testingtime:588us
***2failuresaredetectedinthetestmodule"boost_test_macro3"
>

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

  • <a- 1< b>Сообщения<"13 - 1 >= 12"failed>
  • <b> a- 1>Сообщения<"12 <= 12"failed>

Подробнее о том, какЕдиничная система испытанийпарсирует утверждение, приведенное вэтомразделе.

Custom messages

В то время как совершенно точное и точное имя файла, название тестового случая, номер строки неудачного заявления несет информацию, которая является частичной в отношении значения неудачного заявления. Иногда эта информация недостаточно информативна. Макро<BOOST_TEST>позволяет переопределить сообщение по умолчанию с помощью второго аргумента, как показано на следующем примере.

Example: BOOST_TEST optional failure message

Код

<
#defineBOOST_TEST_MODULEboost_test_message
#include<boost/test/included/unit_test.hpp>
BOOST_AUTO_TEST_CASE(test_message)
{
 constinta(1),b(2);
 BOOST_TEST(a==b,"a should be equal to b: "<<a<<"!="<<b);
 BOOST_TEST(a!=10,"value of a="<<a);
}
>

выход

<
>./boost_test_message--log_level=all
Running1testcase...
Enteringtestmodule"boost_test_message"
test.cpp(12):Enteringtestcase"test_message"
test.cpp(15):error:in"test_message":ashouldbeequaltob:1!=2
test.cpp(16):info:check'value of a=1'haspassed
test.cpp(12):Leavingtestcase"test_message";testingtime:219us
Leavingtestmodule"boost_test_message";testingtime:318us
***1failureisdetectedinthetestmodule"boost_test_message"
>

PrevUpHomeNext

Статья Reported information раздела Boost.Test Writing unit tests может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Writing unit tests ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 21:32:53/0.0075459480285645/0