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

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

Для правильного определения наборов данных следует сначала ввести понятиевыборка.образецопределяется какполиморфный кортеж. Размер кортежа будет по определениюarityсамого образца.

набор данныхпредставляет собойсбор образцов, что

  • Идущий вперед,
  • (24), который, в свою очередь, может быть бесконечным.
  • имеет аритмию, которая является аритмией содержащихся в ней образцов.

Следовательно, набор данных реализует понятиепоследовательности.

Описательная сила наборов данных вЕдиничная система испытанийисходит от

  • интерфейсдля создания пользовательских наборов данных, что довольно просто,
  • операцийони обеспечивают объединение различных наборов данных
  • их интерфейс с другими типами коллекций (<stl>контейнеров,<C>массивов)
  • доступные встроенныегенераторы наборов данных
[Tip] Tip

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

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

Dataset interface

Интерфейс набора данныхдолжен реализовывать две следующие функции/поля:

  • <iteratorbegin()>гдеитераторявляется передним итератором,
  • <boost::unit_test::data::size_tsize()const>указывает размер набора данных. Возвращенный тип представляет собой выделенный класс<size_t>, который может указывать набесконечныйразмер набора данных.
  • число, называемое<arity>, указывающее на количество образцов, возвращенных набором данных;

После того, как класс набора данных<D>объявлен, он должен быть зарегистрирован в структуре путем специализации класса.

boost::unit_test::data::monomorphic::is_dataset

с условием, что

boost::unit_test::data::monomorphic::is_dataset<D>::value

Для оценки<true>.

Следующий пример реализует пользовательский набор данных, генерирующий последовательность Фибоначчи.

Example: Example of custom dataset

Код

<
#defineBOOST_TEST_MODULEdataset_example68
#include<boost/test/included/unit_test.hpp>
#include<boost/test/data/test_case.hpp>
#include<boost/test/data/monomorphic.hpp>
#include<sstream>
namespacebdata=boost::unit_test::data;
// Dataset generating a Fibonacci sequence
classfibonacci_dataset{
public:
   // Samples type is int
   usingsample=int;
   enum{arity=1};
   structiterator{
       iterator():a(1),b(1){}
       intoperator*()const {returnb;}
       voidoperator++()
       {
           a=a+b;
           std::swap(a,b);
       }
   private:
       inta;
       intb;// b is the output
   };
   fibonacci_dataset()           {}
   // size is infinite
   bdata::size_t size()const  {returnbdata::BOOST_TEST_DS_INFINITE_SIZE;}
   // iterator
   iterator      begin()const {returniterator();}
};
namespaceboost{namespaceunit_test{namespacedata{namespacemonomorphic{
 // registering fibonacci_dataset as a proper dataset
 template<>
 structis_dataset<fibonacci_dataset>:boost::mpl::true_{};
}}}}
// Creating a test-driven dataset
BOOST_DATA_TEST_CASE(
   test1,
   fibonacci_dataset()^bdata::make({1,2,3,5,8,13,21,35,56}),
   fib_sample,exp)
{
     BOOST_TEST(fib_sample==exp);
}
>

выход

<
>example68
Running9testcases...
test.cpp(60):error:in"test1/_7":checkfib_sample==exphasfailed[34!=35]
Failureoccurredinafollowingcontext:
   fib_sample=34;exp=35;
test.cpp(60):error:in"test1/_8":checkfib_sample==exphasfailed[55!=56]
Failureoccurredinafollowingcontext:
   fib_sample=55;exp=56;
***2failuresaredetectedinthetestmodule"dataset_example68"
>


В будущем будут рассмотрены полиморфные наборы данных. Их потребность в основном обусловлена заменойтипизированных параметризированных тестовых случаевнабором данных, подобным API.


PrevUpHomeNext

Статья 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 05:43:44/0.026134014129639/1