- •Пояснительная записка
- •Перечень условных обозначений
- •Цели и Задачи
- •Введение
- •Технико-экономическое обоснование проектируемой интеллектуальной системы
- •3.Реализация всплывающей подсказки
- •4.1.Планирование тестирования
- •4.2. Средства автоматизации процедуры тестирования.
- •4.3.Техника модульного тестирования.
- •4.4.Проведение юнит-тестирования
- •5.Заключение
- •6. Библиографический указатель
4.3.Техника модульного тестирования.
Для большинства популярных языков программирования высокого уровня существуют инструменты и библиотеки модульного тестирования. Для С++ одним из таких инструментов является Boost::Test. Boost — одна из самых известных (и сам больших) библиотек для C++, а Boost::Test – это Фреймворк для тестирования, входящий в неё и построенный на макросах.
4.4.Проведение юнит-тестирования
Рассмотрим класс, единственная задача которого – деление и умножение некоторого числа и сохранение результата:
class Calculate
{
public:
explicit Calculate(int value)
: Value_(value)
{
}
void Divide(int value)
{
if (value == 0)
{
throw std::invalid_argument("Деление на ноль!");
}
Value_ /= value;
}
void Multiply(int value)
{
Value_ *= value;
}
int Result() const
{
return Value_;
}
private:
int Value_;
};
Сделаем по тесту на каждый метод:
#include "calculator.h"
#include <boost/test/unit_test.hpp>
#define BOOST_TEST_MODULE testCalculate
BOOST_AUTO_TEST_CASE(testCalculate)
{
Calculator calculator(12);
BOOST_CHECK_EQUAL(calculate.Result(), 12);
}
BOOST_AUTO_TEST_CASE(testCalculateDivide)
{
Calculate calculate(12);
calculate.Divide(3);
BOOST_CHECK_EQUAL(calculate.Result(), 4);
calculate.Divide(2);
BOOST_CHECK_EQUAL(calculate.Result(), 2);
}
BOOST_AUTO_TEST_CASE(testCalculateMultiply)
{
Calculator calculate(12);
calculate.Multiply(2);
BOOST_CHECK_EQUAL(calculate.Result(), 24);
calculate.Multiply(3);
BOOST_CHECK_EQUAL(calculate.Result(), 72);
}
Мы рассмотрели проверку равенства двух сущностей BOOST_CHECK_EQUAL, но помимо этого Boost Test предоставляет еще ряд инструментов:
BOOST_CHECK(условие)
Простейшая проверка истинно условие или нет.
BOOST_CHECK_EQUAL(значение_1, значение_2)
Проверка на равенство двух значений.
BOOST_CHECK_CLOSE(значение_1, значение_2, точность)
Проверка на равенство чисел с плавающей точкой. Два значения считаются равными, если не отличаются на значение более указанного (в процентах).
BOOST_CHECK_BITWISE_EQUAL(значение_1,значение_2)
Отличная штука! Проверит два значения побитово и сообщит в каком месте биты отличаются.
BOOST_CHECK_EQUAL_COLLECTIONS(начало_1,конец_1,начало_2,конец_2)
Проверка равенства двух последовательностей (массивов или контейнеров), на вход получает пару начало-конец последовательности (указатели или итераторы).
BOOST_CHECK_THROW(инструкция, исключение)
Проверка, что при выполнении инструкции будет вызвано указанное исключение.
5.Заключение
6. Библиографический указатель
Касьянов В.Н., Евстигнеев В.А. Графы в программировании: обработка, визуализация и применение. – СПб. БХВ-Петербург, 2003. – 1104 с. ил.
А. К. Гультяев, В. А. Машин. Проектирование и дизайн пользовательского интерфейса. – Спб. Корона-Принт, 2010.-239с.ил.
Д. Тидвелл. Разработка пользовательских интерфейсов.-Спб. Питер, 2008. – 416 с.ил.
Методическое обеспечение кафедры интеллектуальных информационных технологий. Режим доступа – \\Info.IIT\StudInfo\Методическое обеспечение кафедры.
Open Semantic Technology for Intelligent Systems. Режим доступа – http://ostis.net/.
Википедия. Свободная энциклопедия. Режим доступа – http://wikipedia.org/.