JUnit ErrorCollector @Rule с примером

Содержание:

Anonim

В обычном сценарии всякий раз, когда вы обнаруживаете какую-либо ошибку во время выполнения теста, вы должны остановить тест, исправить ошибку и повторно запустить тест.

Но у JUnit несколько иной подход. С помощью сборщика ошибок JUnit вы все равно можете продолжить выполнение теста даже после обнаружения проблемы или сбоя теста. Сборщик ошибок собирает все объекты ошибок и сообщает об этом только один раз после завершения выполнения теста.

В этом руководстве вы узнаете:

  • Что такое сборщик ошибок в JUnit?
  • Что такое @Rule в jUnit?
  • Пример использования ErrorCollector
  • Преимущества JUnit ErrorCollector

Зачем использовать сборщик ошибок?

При написании тестового сценария вы хотите выполнить все тесты, даже если какая-либо строка кода выйдет из строя из-за сбоя сети, сбоя утверждения или по любой другой причине. В этой ситуации вы все равно можете продолжить выполнение тестового сценария, используя специальную функцию JUnit, известную как «сборщик ошибок».

Для этого JUnit использует аннотацию @Rule, которая используется для создания объекта сборщика ошибок. После создания объекта для сборщика ошибок вы можете легко добавить все ошибки в объект, используя метод addError (Throwable error). Как вы знаете, этот Throwable является суперклассом класса Exception и Error в Java. Когда вы добавляете ошибки таким образом, они регистрируются в результатах теста JUnit.

Преимущество добавления всех ошибок в сборщик ошибок заключается в том, что вы можете проверить все ошибки сразу. Кроме того, если сценарий не работает в середине, он все равно может продолжить его выполнение.

Примечание . В случае использования простого блока assert или try / catch использование метода сборщика ошибок невозможно.

Образец кода

Чтобы узнать больше о сборщике ошибок, см. Ниже пример кода, который демонстрирует, как создать объект сборщика ошибок и добавить все ошибки в этот объект для отслеживания проблемы:

пакет guru99.junit;import org.junit.Rule;import org.junit.Test;import org.junit.rules.ErrorCollector;открытый класс ErrorCollectorExample {@ Правилообщедоступный сборщик ErrorCollector = новый ErrorCollector ();@Тестpublic void example () {collector.addError (new Throwable («Ошибка в первой строке»));collector.addError (new Throwable («Ошибка во второй строке»));Collector.checkThat (getResults (),not (containsString ("здесь ошибка")));// все строки кода будут выполнены, и в конце будет комбинированный сбойбыть авторизованным.}}

Что такое @Rule в jUnit?

JUnit обеспечивает особый вид обработки тестов, контрольных примеров или наборов тестов с использованием аннотации @rule . Используя @rule, вы можете легко добавить или переопределить поведение теста.

Существует несколько встроенных правил, предоставляемых JUnit API, которые может использовать тестировщик, или даже вы можете написать собственное правило.

См. Строку кода ниже, в которой показано, как использовать аннотацию @rule вместе со сборщиком ошибок:

@ Правилообщедоступный сборщик ErrorCollector = новый ErrorCollector ();

Пример использования ErrorCollector

Чтобы понять сборщик ошибок, давайте создадим класс и правило для сбора всех ошибок. Вы добавите сюда все ошибки, используя addError (throwable).

См. Ниже код, который просто создает правило, которое представляет собой не что иное, как создание «объекта сборщика ошибок». Что в дальнейшем используется для добавления всех ошибок, чтобы сообщить о проблеме в конце:

ErrorCollectorExample.java

пакет guru99.junit;import org.junit.Assert;import org.junit.Rule;import org.junit.Test;import org.junit.rules.ErrorCollector;открытый класс ErrorCollectorExample {@ Правилообщедоступный сборщик ErrorCollector = новый ErrorCollector ();@Тестpublic void example () {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;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 = JUnitCore.runClasses (ErrorCollectorExample.class);for (Failure failure: result.getFailures ()) {System.out.println (отказ.toString ());}System.out.println ("Результат ==" + result.wasSuccessful ());}}

Выход:

Просмотрите трассировку отказов, которая отслеживает все ошибки в одном месте:

Преимущества JUnit ErrorCollector

Вы можете использовать утверждение JUnit для функциональной проверки или проверки графического интерфейса, например

  1. assertEquals (строковое сообщение, ожидаемый объект, фактический объект), которые сравнивают, что два объекта равны.
  2. Точно так же assertTrue (логическое условие) утверждает, что условие истинно.

Используя утверждение, проверка достоверности становится простой. Но одна из основных проблем заключается в том, что выполнение теста останавливается, даже если одно утверждение не выполняется.

Непрерывность тестирования и обработка восстановления имеют решающее значение для успеха автоматизации тестирования. Сборщик ошибок - лучший способ справиться с подобными сценариями.

Резюме :

  • Сборщик ошибок Junit позволяет продолжить тестирование даже после обнаружения первой проблемы и сбоя теста в конце.
  • Сборщик ошибок собирает все объекты ошибок и сообщает об этом только, в конце концов, выполнение теста закончилось.
  • Преимущество добавления всех ошибок в сборщик ошибок заключается в том, что вы можете проверить все ошибки сразу.
  • Сборщик ошибок просто добавляет ошибки, используя метод addError (throwable err), предоставляемый ErrorCollector.java.