Приклад запуску тестів JUnit у середовищі Eclipse

Перед початком роботи необхідно додати бібліотеку junit.jar до маршруту побудови проекту. Інсталяція Eclipse уже містить у собі JUnit у підключенні org.junit. Щоб додати бібліотеку JUnit у ваш проект треба:

1. Створіть проект "JUnitTest"

2. Відкрити сторінку настроювання маршруту побудови проекту (у контекстному меню проекту) і выберать пунтк меню Properties > Java Build Path).

3. Перемкнутися на закладку Libraries.

4. Додати junit.jar, що втримується в org.junit у каталозі підключень, як зовнішній JAR для вашого проекту.

Щоб подивитися вихідний код JUnit, треба приєднати junitsrc.zip до junit.jar. Архів вихідного коду розташований в org.eclipse.jdt, вихідний код підключення – в src/ org.junit_3.8. 1.

Коли проект JUnitTest одержав доступ до класів Junit, можна починати писати ваш перший тест. На першому кроці реалізуємо тест як підклас TestCase. Це можна зробити або, використовуючи стандартний Майстер Class, або спеціальний Майстер Test Case. Алгоритм ваших дій такий:

1. Відкрити Майстер New (File > New > JUnit Test Case).

2. Увести ім'я вашого класу тесту " TestFailure " (мал. 2.1):

3. Клацнути на Finish для створення класу тесту.

 

Рисунок 7.1 - Додавання нового тесту

 

По-друге, додаємо метод тестування в клас TestFailure. Швидкий спосіб створення тестового методу можна виконати за допомогою шаблона test. Щоб це зробити, уведіть "test" й Ctrl+Space для активізації контентной допомоги й виберіть шаблон "test". Зміните ім'я створюваного методу на testFailure і викличте метод fail(). Також зміните модифікатор видимості, щоб цей метод тестування був відкритим.

public void testFailure() { fail();}

Щоб запустити TestFailure, активізуйте в панелі інструментів і виберіть Run as > JUnit Test. Ви можете проинспектировать результати тесту в поданні JUnit. Це подання показує вам хід виконання й стан тесту - мал. 2.2.

 

Рисунок 7.2 - Запуск тесту

 

Подання показується в поточній перспективі, коли б ви не запустили виконання тесту. Зручною класифікацією для подання JUnit уважати його швидким поданням. Подання JUnit має дві закладки: одна показує вам список помилок, а інше показує вам комплект тесту у вигляді дерева. Ви можете переходити від помилки до відповідного вихідного коду подвійним щигликом на відповідному рядку в трасі помилки.

Розуміючи JUnit як швидке подання, видалите оператор fail() у методі testFailure(), так що тест обходиться, і запустите знову тест знову. Ви можете запустити знову тесту або двічі клацнувши на кнопці Rerun у панелі інструментів подання, або запустивши знову програму, що була останньої запущена активізацією що випадає Run. Зараз тест успішний. Оскільки тест успішний, подання JUnit не спливає, але індикатор успішності показується на іконці подання Junit, а рядок стану показує результат тесту. Як нагадування про перезапуск вашого тесту, іконка подання декорується "*", коли змінюєте вміст робочого місця після запуску:.

- Успішний запуск тесту.

- Успішний запуск тесту, але вміст робочого місця був змінений після останнього запуску.

Крім виконання тесту, описаного вище, ви можете також:

  • Виконувати тест у проекті, вихідній папці або пакеті - Виберіть проект, пакет, або вихідну папку й запустите всі включені тести за допомогою Run as > JUnit Test. Ця команда знаходить всі тести усередині проекту, вихідної папки або пакета й виконує їх.
  • Виконувати єдиний метод тесту - Виберіть метод тесту в Outline або Package Explorer і за допомогою Run as > JUnit Test обраний метод буде виконаний.
  • Виконувати єдиний тест - Виберіть тест у поданні JUnit і виконаєте Rerun з контекстного меню.

Якщо хочете передати параметри або настроїти установки для виконання тесту, ви відкриваєте діалог Launch Configuration. Виберіть Run... у меню, що випадає, Run у панелі інструментів - рис 7.3.

Рисунок 7.3 - Запуск тесту на виконання

 

У цьому діалозі ви можете задати виконуваний тест, його аргументи, його classpath для часу виконання й середовище Java часу виконання.

У випадку помилки тесту ви можете додержуватися таких кроків для налагодження його:

1. Клацніть двічі на елементі помилки в трасі стека в поданні Junit, щоб відкрити відповідний файл у редакторі.

2. Установите крапку останова на початок методу тесту.

3. Виберіть варіант тесту й виконаєте Debug As>JUnit Test із що випадає Debug.

Конфігурація запуску JUnit має опцію "залишити в живих". Якщо ваша Java VM підтримує "гарячу заміну коду " ви можете виправити код і запустити знову тест без перезапуску повного виконання тесту. Щоб дозволити цю опцію, виберіть прапорець Keep JUnit running after a test run when debugging у конфігурації запуску JUnit.

В JUnit Майстер TestSuite допомагає вам у створенні комплекту тесту. Ви можете вибирати ряд класів, які повинні становити комплект.

1. Відкрийте Майстер New

2. Виберіть Java > JUnit > JUnit Test Suite і клацніть на Next.

3. Уведіть ім'я класу вашого комплекту тесту (за згодою використається "AllTests", що з'являється за замовчуванням) – мал. 2.4.

4. Виберіть класи, які повинні бути включені в комплект. Ми зараз маємо тільки один клас тесту, але ви можете додавати в комплект пізніше.

Рисунок 7.4 - Створення комплекту тестів

 

Ви можете додати або видалити класи тесту з комплекту тесту двома способами:

  • Вручну, редагуванням файлу комплекту тесту.
  • Перезапуском Майстра й вибором нового набору класів тесту.

Примітка: Майстер поміщає 2 маркери, //$JUnit-BEGIN$ й //$JUnit-END$, у створений клас комплекту тесту, які дозволяють Майстрові змінювати існуючі класи комплекту тесту. Редагувати код між маркерами не рекомендується.

Довідкова інформація

Ієрархія класів JUnit:

o java.lang.Object

o org.junit. Assert

o org.junit. Assume

o java.lang.Throwable (implements java.io.Serializable)

o java.lang.Error

o java.lang.AssertionError

o org.junit. ComparisonFailure

o org.junit. Test.None

Annotation Type Hierarchy

o org.junit. Test (implements java.lang.annotation.Annotation)

o org.junit. Ignore (implements java.lang.annotation.Annotation)

o org.junit. BeforeClass (implements java.lang.annotation.Annotation)

o org.junit. Before (implements java.lang.annotation.Annotation)

o org.junit. AfterClass (implements java.lang.annotation.Annotation)

o org.junit. After (implements java.lang.annotation.Annotation)

Для перевірки правильності виконань методу в JUnit передбачена група методів Assert, що перевіряють умови й у випадку розбіжності отмечающие тест не пройденим.

Опис методів:

 

Method Summary
static void assertArrayEquals(byte[] expecteds, byte[] actuals) Asserts that two byte arrays are equal.
static void assertArrayEquals(char[] expecteds, char[] actuals) Asserts that two char arrays are equal.
static void assertArrayEquals(int[] expecteds, int[] actuals) Asserts that two int arrays are equal.
static void assertArrayEquals(long[] expecteds, long[] actuals) Asserts that two long arrays are equal.
static void assertArrayEquals(java.lang.Object[] expecteds, java.lang.Object[] actuals) Asserts that two object arrays are equal.
static void assertArrayEquals(short[] expecteds, short[] actuals) Asserts that two short arrays are equal.
static void assertArrayEquals(java.lang.String message, byte[] expecteds, byte[] actuals) Asserts that two byte arrays are equal.
static void assertArrayEquals(java.lang.String message, char[] expecteds, char[] actuals) Asserts that two char arrays are equal.
static void assertArrayEquals(java.lang.String message, int[] expecteds, int[] actuals) Asserts that two int arrays are equal.
static void assertArrayEquals(java.lang.String message, long[] expecteds, long[] actuals) Asserts that two long arrays are equal.
static void assertArrayEquals(java.lang.String message, java.lang.Object[] expecteds, java.lang.Object[] actuals)
Asserts that two object arrays are equal.
static void assertArrayEquals(java.lang.String message, short[] expecteds, short[] actuals) Asserts that two short arrays are equal.
static void assertEquals(double expected, double actual) Deprecated. Use assertEquals(double expected, double actual, double epsilon) instead
static void assertEquals(double expected, double actual, double delta) Asserts that two doubles or floats are equal to within a positive delta.
static void assertEquals(long expected, long actual) Asserts that two longs are equal.
static void assertEquals(java.lang.Object[] expecteds, java.lang.Object[] actuals) Deprecated. use assertArrayEquals
static void assertEquals(java.lang.Object expected, java.lang.Object actual) Asserts that two objects are equal.
static void assertEquals(java.lang.String message, double expected, double actual) Deprecated. Use assertEquals(String message, double expected, double actual, double epsilon) instead
static void assertEquals(java.lang.String message, double expected, double actual, double delta) Asserts that two doubles or floats are equal to within a positive delta.
static void assertEquals(java.lang.String message, long expected, long actual) Asserts that two longs are equal.
static void assertEquals(java.lang.String message, java.lang.Object[] expecteds, java.lang.Object[] actuals) Deprecated. use assertArrayEquals
static void assertEquals(java.lang.String message, java.lang.Object expected, java.lang.Object actual) Asserts that two objects are equal.
static void assertFalse(boolean condition) Asserts that a condition is false.
static void assertFalse(java.lang.String message, boolean condition) Asserts that a condition is false.
static void assertNotNull(java.lang.Object object) Asserts that an object isn't null.
static void assertNotNull(java.lang.String message, java.lang.Object object) Asserts that an object isn't null.
static void assertNotSame(java.lang.Object unexpected, java.lang.Object actual) Asserts that two objects do not refer to the same object.
static void assertNotSame(java.lang.String message, java.lang.Object unexpected, java.lang.Object actual)
Asserts that two objects do not refer to the same object.
static void assertNull(java.lang.Object object) Asserts that an object is null.
static void assertNull(java.lang.String message, java.lang.Object object) Asserts that an object is null.
static void assertSame(java.lang.Object expected, java.lang.Object actual) Asserts that two objects refer to the same object.
static void assertSame(java.lang.String message, java.lang.Object expected, java.lang.Object actual) Asserts that two objects refer to the same object.
static

 

<T> void
assertThat(java.lang.String reason, T actual, org.hamcrest.Matcher<T> matcher) Asserts that actual satisfies the condition specified by matcher.

 

static <T> void
assertThat(T actual, org.hamcrest.Matcher<T> matcher) Asserts that actual satisfies the condition specified by matcher. static void assertTrue(boolean condition) Asserts that a condition is true. static void assertTrue(java.lang.String message, boolean condition) Asserts that a condition is true. static void fail() Fails a test with no message. static void fail(java.lang.String message) Fails a test with the given message.

 

Функція fail() примусово відзначає тест не пройденим. Використається, якщо ми реалізуємо якусь перевірку самостійно й вона не отлавливается функцією assert.

 

5 Хід виконання роботи:

Використовуючи створену в лабораторній роботі програму мовою Java, підготувати з використанням бібліотеки JUnit тестові класи й серію тестів кожного класу Java-програми. Для формування серії тестів використати дані лабораторної роботи № 2, тобто вхідні й вихідні масиви даних для тестування.

5.1 Створити проект із тестовими класами.

5.2 Переконатися в проходженні всіх тестових даних отриманих у лабораторній роботі № 2.

5.3 Розширити класи тестів так, щоб у них застосовувався метод assertTrue й/або assertFalse.

5.4 Змінити Java-програму так, щоб модульне тестування було реалізовано засобами обробки виключень.

5.6 Виводи (чи виявлені помилки в програмі? Які тести виконані невдало? Який варіант реалізації модульного тестування на вашу думку більше кращий: а. застосування бібліотеки JUnit або б. використання механізму обробки виключень Try-Catch?).


Питання до захисту роботи:

Дайте визначення Мм-шляху Відповідь_______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: