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

Fixtures

Boost , Boost.Test , Declaring and organizing 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

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

  • предварительные условия
  • Особые состояния испытываемых единиц
  • Необходимые процедуры очистки

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

С введением eXтреморРРограммирование (XP), стиль тестирования, который требует повторения установки / очистки теста, стал еще более популярным. Одиночные тестовые модули, принятые XP, могут содержать сотни единичных тестовых случаев, многие из которых требуют очень похожей настройки / очистки. Это проблема, которую предназначен для решения испытательный прибор.

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

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

struct MyFixture {
  MyFixture()   { i = new int; *i = 0 }
  ~MyFixture()  { delete i; }
  int* i;
};
BOOST_AUTO_TEST_CASE( test_case1 )
{
  MyFixture f;
  // do something involving f.i
}
BOOST_AUTO_TEST_CASE( test_case2 )
{
  MyFixture f;
  // do something involving f.i
}

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

  • Мы должны добавить заявление о фиксации в каждый тестовый случай вручную.
  • Объекты, определенные в фиксации, являются ссылками с префиксом<<fixture-instance-name>>.
  • Нет места для выполненияглобальногокрепления, которое выполняетглобальныепроцедуры установки / очистки до и после тестирования.

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

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

PrevUpHomeNext

Статья Fixtures раздела Boost.Test Declaring and organizing tests может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Declaring and organizing tests ::


реклама


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

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