JUnit ErrorCollector @Rule із прикладом
У звичайному сценарії, коли ви виявляєте будь-яку помилку під час виконання тесту, ви зупиняєте тест, виправляєте помилку та повторно запускаєте тест.
Можливості JUnit має дещо інший підхід. с JUnit збирача помилок, ви все ще можете продовжувати виконання тесту навіть після того, як виявлено проблему або тест не вдається. Колектор помилок збирає всі об'єкти помилок і повідомляє про це лише один раз після завершення виконання тесту.
Навіщо використовувати Error Collector?
Під час написання тестового сценарію ви бажаєте виконати всі тести, навіть якщо будь-який рядок коду зазнає невдачі через збій мережі, збій підтвердження або з будь-якої іншої причини. У цій ситуації ви можете продовжити виконання тестового сценарію за допомогою спеціальної функції, наданої JUnit відомий як «колектор помилок».
Для цього, JUnit використовує Анотація @Rule який використовується для створення об’єкта збирача помилок. Після створення об’єкта для збирача помилок ви можете легко додати всі помилки в об’єкт за допомогою методу addError (можлива помилка). Як відомо, що Кидальний є супер класом Виняток та помилка клас в Java. Коли ви додаєте помилки таким чином, ці помилки будуть зареєстровані JUnit результати тесту .
Перевага додавання всіх помилок у збірник помилок полягає в тому, що ви можете перевірити всі помилки одночасно. Крім того, якщо сценарій дає збій посередині, він все одно може продовжити його виконання
Примітка:: у разі використання простого блоку assert або try/catch використання методу збору помилок буде неможливим.
Зразок коду
Щоб дізнатися більше про колекціонер помилок, дивіться приклад коду нижче, який демонструє, як створити об'єкт колекціонера помилок та додати всі помилки з цього об'єкта до tracпитання:
package guru99.junit;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ErrorCollector;
public class ErrorCollectorExample {
@Rule
public ErrorCollector collector = new ErrorCollector();
@Test
public void example() {
collector.addError(new Throwable("There is an error in first line"));
collector.addError(new Throwable("There is an error in second line"));
collector.checkThat(getResults(),
not(containsString("here is an error")));
// all lines of code will execute and at the end a combined failure will
be logged in.
}
}
Що таке @Rule в jUnit?
JUnit забезпечує особливий вид обробки тестів, Тестовий випадок або набір тестів за допомогою анотація @rule. Використовуючи @rule, ви можете легко додати або перевизначити поведінку тесту.
Є кілька вбудованих правил, наданих JUnit API, який може використовувати тестер, або навіть ви можете написати наше власне правило.
Дивіться рядок коду нижче, який показує, як використовувати анотацію @rule разом із Error Collector:
@Rule public ErrorCollector collector= new ErrorCollector();
Приклад використання ErrorCollector
Щоб зрозуміти збирач помилок, давайте створимо клас і правило для збору всіх помилок. Ви додасте сюди всі помилки за допомогою addError(throwable).
Нижче наведено код, який просто створює правило, яке є не чим іншим, як створенням «об’єкта збирача помилок». Який далі використовується для додавання всіх помилок, щоб повідомити про проблему в кінці:
ErrorCollectorExample.java
package guru99.junit;
import org.junit.Assert;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ErrorCollector;
public class ErrorCollectorExample {
@Rule
public ErrorCollector collector = new ErrorCollector();
@Test
public void example() {
collector.addError(new Throwable("There is an error in first line"));
collector.addError(new Throwable("There is an error in second line"));
System.out.println("Hello");
try {
Assert.assertTrue("A " == "B");
} catch (Throwable t) {
collector.addError(t);
}
System.out.println("World!!!!");
}
}
TestRunner.java
Давайте додамо вищевказаний тестовий клас у програму виконання тестів і виконаємо його, щоб зібрати всі помилки. Перегляньте код нижче:
package guru99.junit;
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
public class TestRunner {
public static void main(String[] args) {
Result result = JUnitCore.runClasses(ErrorCollectorExample.class);
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
System.out.println("Result=="+result.wasSuccessful());
}
}
вихід:
Дивіться на невдачу tracе який tracвсі помилки в одному місці:
Переваги JUnit ErrorCollector
Ви можете використовувати JUnit твердження для перевірки функціональності або GUI, наприклад
- assertEquals(повідомлення рядка, очікуваний об’єкт, фактичний об’єкт), які порівнюють, що два об’єкти є рівними.
- Подібним чином assertTrue(булева умова) підтверджує, що умова є істинною.
Використовуючи твердження, перевірка перевірки стає легкою. Але одна головна проблема полягає в тому, що виконання тесту припиниться, навіть якщо одне твердження виявиться невдалим.
Безперервність тестування та керування відновленням мають вирішальне значення для успіху автоматизації тестування. Error Collector — найкращий спосіб вирішення подібних ситуацій.
Резюме
- Колектор помилок Junit дозволяє продовжувати тест навіть після того, як знайдено першу проблему, а в кінці тест не вдається
- Збирач помилок збирає всі об’єкти помилок і повідомляє про них лише після завершення виконання тесту
- Перевага додавання всіх помилок у збірник помилок полягає в тому, що ви можете перевірити всі помилки одночасно
- Збирач помилок просто додає помилки за допомогою методу addError(throwable err), наданого ErrorCollector.java.

