За звичайним сценарієм, коли ви виявляєте будь-яку помилку під час виконання тесту, ви зупиняєте тест, виправляєте помилку та повторно запускаєте тест.
Але JUnit має дещо інший підхід. За допомогою збирача помилок JUnit ви все ще можете продовжувати виконання тесту навіть після того, як виявлено проблему або тест не вдався. Колекціонер помилок збирає всі об'єкти помилок і повідомляє про це лише один раз після закінчення тесту.
У цьому підручнику ви дізнаєтесь-
- Що таке колектор помилок у JUnit?
- Що таке @Rule в jUnit?
- Приклад використання ErrorCollector
- Переваги JUnit ErrorCollector
Навіщо використовувати колектор помилок?
Під час написання тестового скрипта ви хочете виконати всі тести, навіть якщо будь-який рядок коду виходить з ладу через збій мережі, збій твердження або будь-яку іншу причину. У такій ситуації ви все ще можете продовжувати виконувати тестовий скрипт, використовуючи спеціальну функцію, надану JUnit, відому як "збирач помилок".
Для цього JUnit використовує анотацію @Rule, яка використовується для створення об'єкта збирача помилок. Після створення об’єкта для збирача помилок ви можете легко додати всі помилки в об’єкт за допомогою методу addError (помилка, що підлягає передачі). Як відомо, Throwable - це супер клас винятків та класів помилок у Java. Коли ви додаєте помилки таким чином, ці помилки реєструються в результатах тестування JUnit.
Перевага додавання всіх помилок у колекторі помилок полягає в тому, що ви можете перевірити всі помилки одночасно. Крім того, якщо сценарій не вдається посередині, він все ще може продовжувати його виконувати
Примітка : У випадку використання простого блоку assert або try / catch використання методу збирача помилок буде неможливим.
Зразок коду
Щоб більше зрозуміти Error Collector, див. Нижче приклад коду, який демонструє, як створити об’єкт Error Collector та додати всі помилки в цьому об’єкті для відстеження проблеми:
пакет guru99.junit;імпорт org.junit.Rule;імпорт org.junit.Test;імпорт org.junit.rules.ErrorCollector;публічний клас ErrorCollectorExample {@ Правилоpublic ErrorCollector collector = new ErrorCollector ();@ Тестприклад public void () {collector.addError (new Throwable ("У першому рядку є помилка"));collector.addError (new Throwable ("У другому рядку є помилка"));collector.checkThat (getResults (),not (containsString ("тут помилка")));// виконуються всі рядки коду, а в кінці - комбінована помилкабути авторизованим.}}
Що таке @Rule в jUnit?
JUnit забезпечує особливий вид обробки тестів, Test Case або тестового набору за допомогою анотації @rule . Використовуючи @rule, ви можете легко додати або перевизначити поведінку тесту.
Існує кілька вбудованих правил, наданих JUnit API, які тестер може використовувати, або навіть ви можете написати наше власне правило.
Дивіться нижче рядок коду, який показує, як використовувати анотацію @rule разом із Error Collector:
@ Правилоpublic ErrorCollector collector = new ErrorCollector ();
Приклад використання ErrorCollector
Щоб зрозуміти збірник помилок, давайте створимо клас і правило для збору всіх помилок. Ви додасте всі помилки, використовуючи addError (для викидання) сюди.
Дивіться нижче код, який просто створює правило, яке є нічим іншим, як створенням "Об'єкт колектора помилок". Який далі використовується для додавання всіх помилок, щоб повідомити про проблему в кінці:
ErrorCollectorExample.java
пакет guru99.junit;імпорт org.junit.Assert;імпорт org.junit.Rule;імпорт org.junit.Test;імпорт org.junit.rules.ErrorCollector;публічний клас ErrorCollectorExample {@ Правилоpublic ErrorCollector collector = new ErrorCollector ();@ Тестприклад public void () {collector.addError (new Throwable ("У першому рядку є помилка"));collector.addError (new Throwable ("У другому рядку є помилка"));System.out.println ("Привіт");спробуй {Assert.assertTrue ("A" == "B");} catch (Throwable t) {collector.addError (t);}System.out.println ("Світ !!!!");}}
TestRunner.java
Давайте додамо вище тестовий клас у пробний біг і виконаємо його, щоб зібрати всі помилки. Дивіться нижче код:
пакет guru99.junit;імпорт org.junit.runner.JUnitCore;імпорт org.junit.runner.Result;імпорт org.junit.runner.notification.Failure;публічний клас TestRunner {public static void main (String [] args) {Результат результату = JUnitCore.runClasses (ErrorCollectorExample.class);for (Помилка помилки: result.getFailures ()) {System.out.println (failure.toString ());}System.out.println ("Результат ==" + result.wasSuccessful ());}}
Вихід:
Перегляньте трасування відмов, яке відстежує всі помилки в одному місці:
Переваги JUnit ErrorCollector
Ви можете використовувати твердження JUnit для перевірки функціональності або графічного інтерфейсу, наприклад
- assertEquals (повідомлення рядка, очікуваний об’єкт, фактичний об’єкт), які порівнюють, що два об’єкти рівні.
- Подібним чином assertTrue (логічна умова) стверджує, що умова є істинною.
Використовуючи твердження, перевірочний тест стає простим. Але одна з головних проблем полягає в тому, що виконання тесту зупиниться, навіть якщо одне твердження зазнає невдачі.
Безперервність тестування та обробка даних відновлення мають вирішальне значення для успіху автоматизації тестування. Error Collector - найкращий спосіб обробляти подібні сценарії.
Короткий зміст :
- Колектор помилок Junit дозволяє продовжувати тестування навіть після того, як буде виявлено перше видання, а в кінці тесту не вдасться
- Колекціонер помилок збирає всі об'єкти помилок і повідомляє про це лише, врешті-решт, виконання тесту закінчено
- Перевага додавання всіх помилок у колекторі помилок полягає в тому, що ви можете перевірити всі помилки одночасно
- Колекціонер помилок просто додає помилки за допомогою методу addError (помилковий викид), наданого ErrorCollector.java.