JUnit - найпопулярніший модуль тестування модулів на Java. Це прямо рекомендується для модульного тестування. JUnit не вимагає сервера для тестування веб-додатків, що робить процес тестування швидким.
Структура JUnit також дозволяє швидко і просто створювати тестові кейси та дані тестів. Пакет org.Junit складається з безлічі інтерфейсів та класів для тестування JUnit, таких як Test, Assert, After, Before тощо.
Що таке тестовий прилад
Перш ніж ми зрозуміємо, що таке тестовий прилад, вивчимо наведений нижче код
Цей код призначений для виконання двох тестів на простому файлі.
відкритий клас OutputFileTest {вихід приватного файлу;вихід = новий файл (…);output.delete ();public void testFile1 () {// Код для перевірки тестового випадку 1}output.delete ();вихід = новий файл (…);public void testFile2 () {// Код для перевірки тестового випадку 2}output.delete ();}
Мало питань тут
- Код не читається
- Код непростий в обслуговуванні.
- Коли набір тестів складний, код може містити логічні проблеми.
Порівняйте той самий код за допомогою JUnit
відкритий клас OutputFileTest{вихід приватного файлу;@Before public void createOutputFile (){вихід = новий файл (…);}@After public void deleteOutputFile (){output.delete ();}@Test public void testFile1 (){// код для мети тесту}@Test public void testFile2 (){// код для мети тесту}}
Код набагато читабельніший і ремонтопридатніший. Наведена вище структура коду є тестовим приладом.
Тестовий прилад - це контекст, в якому працює Тестовий кейс. Як правило, тестові прилади включають:
- Об'єкти або ресурси, доступні для будь-якого тестового випадку.
- Необхідні дії, що роблять ці об’єкти / ресурси доступними.
- Ці заходи є
- розподіл ( налаштування )
- де-розподіл ( розрив ).
Налаштування та розірвання
- Зазвичай є кілька повторюваних завдань, які необхідно виконати перед кожним тестом. Приклад: створити підключення до бази даних.
- Так само, наприкінці кожного тестового випадку можуть бути кілька повторюваних завдань. Приклад: очищення після закінчення тесту.
- JUnit надає анотації, які допомагають у налаштуванні та відключенні. Це гарантує звільнення ресурсів, а тестова система готова до наступного тесту.
Ці анотації обговорюються нижче -
Налаштування
@Before анотація використовується для методу, що містить код Java, для запуску перед кожним тестовим прикладом. тобто він запускається перед кожним виконанням тесту.
Теордаун (незалежно від вироку)
@After анотація використовується для методу, що містить код Java, для запуску після кожного тесту. Ці методи будуть працювати, навіть якщо в тестовому випадку або у випадку помилок твердження виникнуть будь-які винятки.
Примітка:
- Дозволено мати будь-яку кількість анотацій, перерахованих вище.
- Усі методи, позначені @Before, будуть виконуватися перед кожним тестом, але вони можуть працювати в будь-якому порядку.
- Ви можете успадкувати методи @Before та @After від суперкласу, Execution є таким: Це стандартний процес виконання в JUnit.
- Виконайте методи @Before у суперкласі
- Виконайте методи @Before у цьому класі
- Виконайте метод @Test у цьому класі
- Виконайте методи @After у цьому класі
- Виконайте методи @After у суперкласі
Приклад: Створення класу з файлом як тестовим пристосуванням
відкритий клас OutputFileTest{вихід приватного файлу;@Before public void createOutputFile (){вихід = новий файл (…);}@After public void deleteOutputFile (){output.delete ();}@Test public void testFile1 (){// код для мети тесту}@Test public void testFile2 (){// код для мети тесту}}
У наведеному вище прикладі ланцюжок виконання буде таким:
- createOutputFile ()
- testFile1 ()
- deleteOutputFile ()
- createOutputFile ()
- testFile2 ()
- deleteOutputFile ()
Припущення: testFile1 () запускається до testFile2 () - що не гарантується.
Одноразове налаштування
- Запустити метод можна лише один раз для усього тестового класу до того, як виконується будь-який з тестів, і до будь- якого методу (ів @Before ).
- "Одного разу лише налаштування" корисні для запуску серверів, відкриття зв'язку тощо. Закриття та повторне відкриття ресурсів для кожного тесту займає багато часу.
- Це можна зробити за допомогою анотації @BeforeClass
@BeforeClass public static void Method_Name () {// код налаштування класу тут}
Один раз лише зруйнувати
- Подібно до налаштування лише один раз, доступний також один раз метод очищення. Він запускається після того, як всі методи тестування та @After анотації були виконані.
- Це корисно для зупинки серверів, закриття зв’язків тощо.
- Це можна зробити за допомогою анотації @AfterClass
@AfterClass public static void Method_Name (){// код очищення класу тут}
JUnit Test Suites
Якщо ми хочемо виконати кілька тестів у визначеному порядку, це можна зробити, об’єднавши всі тести в одному місці. Це місце називається тестовим набором. Детальніше про те, як виконувати тестові набори та як він використовується в JUnit, буде розглянуто в цьому посібнику.
Джуніт-бігун
JUnit надає інструмент для виконання ваших тестових кейсів.
- Для виконання цих тестів використовується клас JUnitCore .
- Метод, який називається runClasses, наданий org.junit.runner.JUnitCore, використовується для запуску одного або декількох тестових класів.
- Тип повернення цього методу - об’єкт Result ( org.junit.runner.Result ), який використовується для доступу до інформації про тести. Дивіться наступний приклад коду для більшої ясності.
тест громадського класу {public static void main (String [] args) {Результат результату = JUnitCore.runClasses (CreateAndSetName.class);for (Помилка помилки: result.getFailures ()) {System.out.println (failure.toString ());}System.out.println (result.wasSuccessful ());}}
У наведеному вище коді обробляється об'єкт "результат" для отримання помилок та успішних результатів тестових випадків, які ми виконуємо.
Перша програма JUnit
Чітке знання SDLC, програмування Java та основ процесу тестування програмного забезпечення допомагає зрозуміти програму JUnit.
Давайте зрозуміємо Unit Testing на живому прикладі. Нам потрібно створити тестовий клас із методом тестування, позначеним @Test, як зазначено нижче:
MyFirstClassTest.java
пакет guru99.JUnit;імпортувати статичний org.JUnit.Assert. *;імпорт org.JUnit.Test;публічний клас MyFirstClassTest {@ Тестpublic void myFirstMethod () {Рядок str = "JUnit працює нормально";assertEquals ("JUnit працює нормально", str);}}
TestRunner.java
Щоб виконати наш метод тестування (вище), нам потрібно створити тест-драйвер. У тестовому модулі ми повинні додати клас тесту як параметр у методі JCF () runclasses (). Він поверне результат тесту, залежно від того, пройшов тест чи не пройшов.
Детальніше про це дивіться в коді нижче:
пакет guru99.JUnit;імпорт org.JUnit.runner.JUnitCore;імпорт org.JUnit.runner.Result;імпорт org.JUnit.runner.notification.Failure;публічний клас TestRunner {public static void main (String [] args) {Результат результату = JUnitCore.runClasses (MyFirstClassTest.class);for (Помилка помилки: result.getFailures ()) {System.out.println (failure.toString ());}System.out.println ("Результат ==" + result.wasSuccessful ());}}
Вихідні дані
Після того, як TestRunner.java виконує наші методи тестування, ми отримуємо результат як помилковий або переданий. Нижче наведено вихідні пояснення:
- У цьому прикладі, після запуску MyFirstClassTest.java , тест передається, а результат зеленим.
- Якщо це не вдалося, це повинно було показати результат як червоний, а відмову можна спостерігати у трасі відмов. Дивіться нижче JUnit gui:
Короткий зміст :
- JUnit - це фреймворк, який підтримує кілька анотацій для ідентифікації методу, що містить тест.
- JUnit надає анотацію під назвою @Test, яка повідомляє JUnit, що публічний метод void, в якому він використовується, може працювати як тестовий випадок.
- Тестовий прилад - це контекст, в якому працює тестовий приклад
- Щоб виконати кілька тестів у визначеному порядку, це можна зробити, об’єднавши всі тести в одному місці. Це місце називається тестовим набором.
- JUnit надає інструмент для виконання тестів, де ми можемо запускати наші тестові кейси, які називаються Test Runner.