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

Declaring and registering test cases with datasets

Boost , Boost.Test , Data-driven 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

Для декларирования и регистрации тестового случая на основе данных следует использовать макросы BOOST_DATA_TEST_CASE или BOOST_DATA_TEST_CASE_F. Эти две формы эквивалентны, с той разницей, что BOOST_DATA_TEST_CASE_F поддерживает светильники.

Эти макросы являются вариадными и могут использоваться в следующих формах:

BOOST_DATA_TEST_CASE(test_case_name, dataset) { /* dataset1 of arity 1 */ }
BOOST_DATA_TEST_CASE(test_case_name, dataset, var1) { /* datasets of arity 1 */ }
BOOST_DATA_TEST_CASE(test_case_name, dataset, var1, ..., varN) { /* datasets of arity N  */ }
BOOST_DATA_TEST_CASE_F(fixture, test_case_name, dataset) { /* dataset1 of arity 1 with fixture */ }
BOOST_DATA_TEST_CASE_F(fixture, test_case_name, dataset, var1) { /* dataset1 of arity 1 with fixture */ }
BOOST_DATA_TEST_CASE_F(fixture, test_case_name, dataset, var1, ..., varN) { /* dataset1 of arity N with fixture */ }

Первая форма макроса для наборов данных arity 1. Значение выборки, выполняемой испытательным органом, доступно через автоматическую переменную выборка ( диапазон , так как ее название предполагает диапазон значений):

BOOST_DATA_TEST_CASE( test_case_arity1_implicit, data::xrange(5) )
{
  BOOST_TEST((sample <= 4 && sample >= 0));
}

Вторая форма также для наборов данных arity 1, но вместо переменной выборка текущая выборка приведена в var1:

BOOST_DATA_TEST_CASE( test_case_arity1, data::xrange(5), my_var )
{
  BOOST_TEST((my_var <= 4 && my_var >= 0));
}

Третья форма является расширением предыдущей формы для наборов данных arity N. Образец представляет собой полиморфный кортеж, каждая из переменных var1, ..., varN соответствует индексу 1, ... N образца:

BOOST_DATA_TEST_CASE( test_case_arity2, data::xrange(2) ^ data::xrange(5), apples, potatoes)
{
  BOOST_TEST((apples <= 1 && apples >= 0));
  BOOST_TEST((potatoes <= 4 && potatoes >= 0));
}

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

Прочность набора данных и число переменных должны быть точно такими же, причем первая форма является краткой для случая проходимости 1.

[Tip] Tip

Проверка времени компиляции выполняется по когерентности частотности набора данных и количеству переменных var1... varN. Для компиляторов без поддержки C++11 максимальная поддерживаемая аритмия контролируется макросом BOOST_TEST_DATASET_MAX_ARITY, который может быть переопределен приор с включением заголовков Unit Test Framework.

[Caution] Caution

Макросы BOOST_DATA_TEST_CASE и BOOST_DATA_TEST_CASE_F доступны только для компиляторов с поддержкой вариадных макросов.

Samples and test tree

Следует подчеркнуть, что эти макросы не объявляют ни одного тестового случая (как это делает BOOST_AUTO_TEST_CASE), а объявляют и регистрируют столько тестовых случаев, сколько имеется образцов в наборе данных, приведенных в аргументе. Каждый тестовый случай выполняется точно по одному образцу набора данных.

Точнее, что

BOOST_DATA_TEST_CASE(test_case_name, dataset)

имеется в виду следующее:

  • регистрирует test suite test_case_name,
  • он регистрирует столько тестовых случаев, сколько они есть в "dataset", каждый из которых с именем, соответствующим индексу выборки в базе данных, приставленной ("", "", ... "-)", где N - размер набора данных

Это облегчает:

  • определить, какой образец не подходит (скажем "test_case_name/_3)
  • позволяет воспроизводить один или несколько образцов (или полный набор данных) из командной строки с помощью фильтрации Unit Test Framework

Точно так же, как и в обычных тест-кейсах, каждый тест-кейс (связанный с конкретным образцом) выполняется в тестовом корпусе охраняемым образом:


PrevUpHomeNext

Статья Declaring and registering test cases with datasets раздела Boost.Test Data-driven test cases может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Data-driven test cases ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 02:03:06/0.0062861442565918/1