Використання JUnit параметризованих анотацій

Більшість користувачів JUnit не здогадуються, що JUnit4 має деякі нові корисні властивості. Одне з них – це параметризовані інструкції. За допомогою їх можна створити тестовий клас і тестувати Ваш модуль, використовуючи різні дані за допомогою тестового класу.

Передбачається, що Ви знаєте про анотацію @RunWith . З її допомогою треба анотувати Ваш тестовий клас, передавши цю інструкцію параметром значення Parameterized . class.

public class ParametersTest // . >

Другим пунктом, на який Ви повинні звернути увагу, є метод, позначений анотацією @Parameters. Він має бути статичним і повернути колекцію, колекцію того, що Вам треба. Також треба оголосити конструктор, параметрами якого будуть елементи колекції. Цей момент дуже важливий. Будь ласка, подивіться на наступний приклад:

public class ParametersTest

private String correctUrl;

private String testUrl;

public ParametersTest(String corUrl, String tstUrl)

public static Collection data()

Object[][] data = new Object[][]

return Arrays. asList (data);

Ви можете додати будь-який тип цієї колекції і повернути його. Тільки не забудьте змінити при цьому параметри конструктора відповідно до Вашої колекції. У попередньому прикладі в колекції є пари URL - нормалізована і не нормалізована . Відповідно і конструктору передається пара URL. Ось і вся хитрість. Щоразу при запуску тесту дані по черзі зчитуватимуться з Вашої колекції, і передаватимуться конструктору. Це буде відбуватися стільки разів, скільки даних є у Вашій колекції.

Тепер нам треба написати тест. Цей метод оголошено з анотацією@Test.

public voidtUrlNormalization()

String noNormalizedUrl = testUrl;

URL locator = getLocator(noNormalizedUrl);

URLNormalization test = new URLNormalization();

String normalizedUrl = test.getNormalizeURL();

assertEquals(correctUrl, normalizedUrl); //1

Нас цікавитиме рядок (1). У ній засобами JUtil перевіряється рівність коректного нормалізованого URL і того URL, який щойно пройшов нормалізацію за допомогою класу, що тестується. Усі попередні рядки – це ініціалізація об'єкта класу, що тестується, і проведення самої нормалізації.

Нижче наведено параметризований модульний тест: