Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
IPZ / IPZ_lab1_JUnit.doc
Скачиваний:
11
Добавлен:
07.02.2016
Размер:
87.55 Кб
Скачать

Лабораторная работа 1

"JUnit"

Цель – приобрести навыки работы с библиотекой тестирования "JUnit".

1. Теоретические сведения.

Процесс создания относительно сложных программных систем (работа над проектами) можно охарактеризовать следующим свойством:

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

Проведение процедуры тестирования призвано уменьшить число ошибок в программном коде. С этой целью может быть использована библиотека классов "JUnit". Библиотека подключается к создаваемому проекту в качестве соответствующего Java-архива (junit-4.11.jar). "JUnit" можно рассматривать в качестве программного инструментария для написания и прогона тестов. Этот инструментарий также был портирован и на другие языки программирования [2]: C# (NUnit), C++ (CPPUnit), Fortran (fUnit), PHP (PHPUnit), JavaScript (JSUnit)…

Основные концепции JUnit приведены в табл. 1.

Таблица 1 – Назначения основных объектов (JUnit core objects)

Объект (класс)

Описание

Assert

- определение утверждений, подлежащих тестированию (проверке);

Test

- аннотация "@Test" определяет метод как "тестовый";

TestCase

- класс-контейнер для "@Test"-методов;

Suite

- средство группировки тестируемых классов;

Runner

- средство прогона тестов;

Отдельного внимания заслуживает директива вида "@Test(timeout=var)", где "var" – значение в миллисекундах. Ее использование обосновано потребностью оценки временных издержек, связанных с получением результата работы тестируемого метода: если значение параметра "timeout" меньше оценочного значения, то тест автоматически расценивается как "failed".

Приведем некоторые из "Assert"-методов (табл. 2).

Таблица 2 – Методы сравнения объектов

Метод

Назначение

assertEquals(A, B);

- проверка равенства объектов A и B;

assertArrayEquals(A, B);

- проверка равенства массивов;

assertTrue(condition);

- проверка истинности условия

(логического высказывания);

assertFalse(condition);

- проверка ложности высказывания.

Замечания к табл. 2:

- методы имеют тип "static void";

- если в качестве аргументов метода "assertEquals" выступают параметры типа "double", то вводится также 3-й аргумент ("deviation") как разница между значениями 1-го и 2-го аргументов: "assertEquals(double a, double b, deviation);".

Чтобы прогонять тесты несколько раз (с привязкой к различным наборам данных) проводят "параметризованное" тестирование. С этой целью используют директиву (аннотацию) "@RunWith": @RunWith(value=Parameterized.class). Помимо этого также необходимо предварить метод, возвращающий наборы данных, подлежащих анализу, директивой "@Parameterized.Parameters".

Чтобы использовать методы классов "Runner" и "Parameterized", необходимо импортировать следующие пакеты:

org.junit.runner.*;

org.junit.runners.*;

Класс "TestSuite" и группирование тестируемых классов: последняя выполняется с целью автоматизации процесса тестирования. В данном контексте корректно говорить о прогоне тестового набора ("suite").

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

org.junit.runner.RunWith;

org.junit.runners.Suite;

Также следует использовать директиву "@RunWith(Suite.class)".

Соседние файлы в папке IPZ