JUnit ErrorCollector @Rule с примером
⚡ Умное резюме
JUnit ErrorCollector — это правило, позволяющее тесту продолжать выполнение после сбоя, собирая все объекты ошибок и сообщая о них вместе после завершения тестового метода, вместо того чтобы останавливаться.ping к первой проблеме.
В обычном сценарии, когда вы обнаруживаете какую-либо ошибку во время выполнения теста, вы должны остановить тест, исправить ошибку и перезапустить тест.
Созданием цифровых двойников возможности JUnit имеет несколько иной подход. С JUnit Сборщик ошибок позволяет продолжить выполнение теста даже после обнаружения проблемы или сбоя теста. Он собирает все объекты ошибок и сообщает о них только один раз, после завершения выполнения теста.
Зачем использовать сборщик ошибок?
При написании тестового скрипта вам необходимо выполнить все тесты, даже если какая-либо строка кода завершится ошибкой из-за сбоя сети, ошибки утверждения или по любой другой причине. В такой ситуации вы можете продолжить выполнение тестового скрипта, используя специальную функцию, предоставляемую JUnit известный как «сборщик ошибок».
Для этого, JUnit использует @Rule аннотацияЭтот метод используется для создания объекта сборщика ошибок. После создания объекта сборщика ошибок вы можете легко добавить все ошибки в этот объект, используя соответствующий метод. addError (Выбрасываемая ошибка). Как ты знаешь, Метательный является суперклассом Исключение и Ошибка классы в JavaПри добавлении ошибок таким способом они будут регистрироваться в журнале. JUnit результат испытаний.
Преимущество добавления всех ошибок в сборщик ошибок заключается в возможности проверки всех ошибок одновременно. Кроме того, если выполнение скрипта завершится с ошибкой в середине процесса, выполнение все равно продолжится до конца тестового метода.
ВниманиеВ случае использования простого утверждения (assert) или блока try/catch, применение метода сбора ошибок будет невозможно.
Образец кода
Чтобы лучше понять работу Error Collector, ознакомьтесь с приведенным ниже примером кода, демонстрирующим, как создать объект Error Collector и добавить в него все ошибки. 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. } }
Примечание: это наглядный пример.tract — это не компилируемый файл. Его заключительный комментарий переносится на вторую строку без начального //, а функции getResults() и сопоставители Hamcrest не отображаются. Полная рабочая версия приведена ниже. Пример использования ErrorCollector.
Что такое @Rule в JUnit?
JUnit обеспечивает особый способ обработки тестов. Тестовый кейс или набор тестов с использованием @Rule аннотацияИспользуя аннотацию `@Rule`, вы можете легко добавлять или переопределять поведение теста.
В нем предусмотрено несколько встроенных правил. JUnit API, который может использовать тестировщик, а также вы можете написать собственное правило. Поле правила должно быть публичным, нестатическим и иметь тип, реализующий интерфейс TestRule.
См. приведенную ниже строку кода, демонстрирующую использование аннотации @Rule вместе с обработчиком ошибок:
@Rule public ErrorCollector collector= new ErrorCollector();
JUnit Примечание 5 года: Jupiter заменил правила на API расширений, поэтому `@Rule` и `ErrorCollector` отсутствуют в `org.junit.jupiter`. Ближайшими эквивалентами являются `Assertions.assertAll()` и `AssertJ SoftAssertions`. JUnit Приведенный здесь код 4 по-прежнему работает на старом двигателе. См. JUnit аннотации инструкция по использованию полной картыping.
Пример использования 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 Система подсчитывает один запуск, но сообщает о двух ошибках и одном сбое, каждый из которых имеет свой номер строки:
Преимущества JUnit Сборщик ошибок
Вы можете использовать JUnit утверждение для функциональной проверки или проверки графического интерфейса пользователя, например:
- assertEquals(String message, Object expected, Object actual) — это проверка на равенство двух объектов.
- Аналогичным образом, AssertTrue(Boolean Condition) утверждает, что условие истинно.
Использование утверждений упрощает проверку достоверности данных. Однако одной из главных проблем является то, что выполнение теста остановится, даже если хотя бы одно утверждение не сработает.
Обеспечение непрерывности тестирования и обработка восстановления имеют решающее значение для успеха автоматизации тестирования, и это наиболее важно в долгосрочной перспективе. Selenium В ситуациях, когда перезапуск браузера после каждой неудачной проверки обходится дорого, сборщик ошибок — лучший способ обработки подобных сценариев.

