JUnit Тестовые случаи @Before @BeforeClass Аннотация
⚡ Умное резюме
JUnit является наиболее широко используемой средой для модульного тестирования. JavaА аннотации тестовых фикстур точно контролируют, что происходит до и после выполнения каждого тестового метода внутри тестового класса.
JUnit это самая популярная единица Тестирование рамки в Java. Это явно рекомендуется для Модульное тестирование. JUnit Для тестирования веб-приложения не требуется сервер, что значительно ускоряет процесс тестирования.
JUnit Framework также позволяет быстро и легко создавать тестовые примеры и тестовые данные. org.junit Этот пакет состоит из множества интерфейсов и классов для JUnit Тестирование, такое как Test, Assert, After и Before. Более широкое JUnit Семья строится на тех же самых строительных блоках.
Что такое испытательное приспособление?
Прежде чем понять, что такое тестовая среда, давайте изучим приведенный ниже код.
Этот код предназначен для выполнения двух тестовых случаев в простом файле.
public class OutputFileTest { private File output; output = new File(...); output.delete(); public void testFile1(){ //Code to verify Test Case 1 } output.delete(); output = new File(...); public void testFile2(){ //Code to verify Test Case 2 } output.delete(); }
Здесь мало вопросов
- Код нечитаем.
- Код непросто поддерживать.
- Если набор тестов сложен, код может содержать логические проблемы.
Сравните тот же код, используя JUnit.
public class OutputFileTest { private File output; @Before public void createOutputFile() { output = new File(...); } @After public void deleteOutputFile() { output.delete(); } @Test public void testFile1() { // code for test case objective } @Test public void testFile2() { // code for test case objective } }
Код стал намного более читаемым и удобным для сопровождения. Приведенная выше структура кода представляет собой приспособление для испытаний.
Тестовое приспособление — это контекст, в котором JUnit Тестовый кейс бежит. Обычно испытательные приспособления включают в себя:
- Объекты или ресурсы, доступные для любого тестового примера.
- Необходимые действия, обеспечивающие доступ к этим объектам и ресурсам.
- Эти мероприятия
- распределение (установка)
- дераспределение (демонтаж).
Настройка и разборка
Матчи имеют значение, потому что JUnit Эти механизмы запускают проверку каждого теста.
- Обычно перед каждым тестовым примером необходимо выполнить несколько повторяющихся задач. Пример: создать соединение с базой данных.
- Аналогично, в конце каждого тестового примера могут быть повторяющиеся задачи. Пример: для очистки после завершения выполнения теста.
- JUnit Предоставляет аннотации, которые помогают при настройке и завершении работы системы. Это гарантирует освобождение ресурсов и готовность тестовой системы к следующему тестовому случаю.
Эти JUnit Аннотации обсуждаются ниже.
Установка
@Перед аннотация в JUnit используется в методе, содержащем Java код, который выполняется перед каждым тестовым случаем, то есть он выполняется перед каждым выполнением теста.
Снос (независимо от приговора)
@После аннотация используется в методе, содержащем Java код для запуска после каждого тестового примера. Эти методы будут выполняться, даже если в тестовом примере или в случае сбоя утверждения возникают какие-либо исключения.
Примечание:
- Допускается иметь любое количество аннотаций, перечисленных выше.
- Все методы, аннотированные @Перед in JUnit будут выполняться перед каждым тестовым примером, но они могут выполняться в любом порядке.
- Вы можете наследовать методы `@Before` и `@After` от суперкласса. Выполнение происходит следующим образом, и это стандартный процесс выполнения. JUnit.
- Выполнить JUnit @Before методы в суперклассе
- Выполните методы @Before в этом классе.
- Выполните метод @Test в этом классе
- Выполните методы @After в этом классе.
- Выполните методы @After в суперклассе
JUnit Примечание 5 года: эти аннотации JUnit 4 (org.junit). JUnit 5 переименовали их в org.junit.jupiter.api, и JUnit Код 4, приведенный ниже, по-прежнему работает на старом двигателе.
| JUnit Аннотация 4 г. | JUnit 5 (эквивалент Юпитера) | Работает |
|---|---|---|
| @Перед | @BeforeEach | Перед каждым методом тестирования |
| @После | @ПослеКаждого | После каждого метода тестирования |
| @BeforeClass | @BeforeAll | Один раз перед всем классом |
| @После занятий | @После всего | Один раз после всего класса |
| @ Игнорировать | @Неполноценный | Пропускает аннотированный тест |
Пример: Создание класса с использованием файла в качестве тестового инструмента.
public class OutputFileTest { private File output; @Before public void createOutputFile() { output = new File(...); } @After public void deleteOutputFile() { output.delete(); } @Test public void testFile1() { // code for test case objective } @Test public void testFile2() { // code for test case objective } }
В приведенном выше примере цепочка выполнения будет выглядеть следующим образом. Диаграмма tracЭто один цикл создания-тестирования-удаления на каждый метод тестирования.
- создатьВыходнойФайл()
- тестФайл1()
- удалитьВыходнойФайл()
- создатьВыходнойФайл()
- тестФайл2()
- удалитьВыходнойФайл()
Предположение:
Функция testFile1() выполняется раньше функции testFile2(), что не гарантируется.
Однократная установка
- Можно запустить метод только один раз для всего тестового класса перед выполнением любого из тестов и перед любым @Перед метод (ы).
- «Одноразовая настройка» полезна для запуска серверов, установления связи и подобных задач. Закрытие и повторное открытие ресурсов для каждого теста занимает много времени.
- Это можно сделать с помощью аннотации @BeforeClass in JUnit.
@BeforeClass public static void Method_Name() { // class setup code here }
Метод должен быть публичная статическая пустота, потому как JUnit Вызывает эту функцию до того, как будет создан какой-либо тестовый экземпляр.
Снести только один раз
- Аналогично однократной настройке, доступен также однократный метод очистки. Он выполняется после всех методов тестовых случаев и @После аннотации выполнены.
- Это полезно для остановкиping серверы и замыкание каналов связи.
- Это можно сделать с помощью @После занятий аннотаций.
@AfterClass public static void Method_Name() { // class cleanup code here }
JUnit Наборы тестов
После настройки тестовых условий, связанные тестовые классы обычно группируются и запускаются одновременно.
Если нам нужно выполнить несколько тестов в заданном порядке, это можно сделать, объединив все тесты в одном месте. Это место называется набором тестов. Более подробная информация о том, как выполнять наборы тестов и как они используются, приведена в [ссылка на документацию]. JUnit рассматриваются в этом учебник.
JUnit Тестовый бегун
JUnit предоставляет инструмент для выполнения ваших тестовых случаев.
- JUnitОсновные class используется для выполнения этих тестов.
- Метод под названием runClasses предоставляемые org.junit.runner.JUnitОсновные используется для запуска одного или нескольких тестовых классов.
- Тип возвращаемого значения этого метода — Результат объект (org.junit.runner.Результат), который используется для доступа к информации о тестах. Для большей ясности см. следующий пример кода.
public class Test { public static void main(String[] args) { Result result = JUnitCore.runClasses(CreateAndSetName.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println(result.wasSuccessful()); } }
В приведенном выше коде объект «result» обрабатывается для получения результатов выполнения тестовых случаев, как неудачных, так и успешных. Вспомогательные функции, такие как... Утвердитьравно поднимать эти вопросы, касающиеся неудач, в то время как @ Игнорировать Пропускает тест.
JUnit Примечание 5 года: JUnitОсновные это JUnit 4 бегуна. JUnit 5 заменяет его на JUnit Платформа гранатомет API, обычно запускаемый IDE, Gradle или Maven Surefire.
Имя JUnit Программа
Хорошее знание SDLC, Java программирование и основы тестирование программного обеспечения этот процесс помогает понять JUnit программа, как и знание того, как модульные тесты отличаются от интеграционных тестов.
Давайте разберемся с модульным тестированием на реальном примере. Нам нужно создать тестовый класс с тестовым методом, аннотированным следующим образом: @Контрольная работа как указано ниже:
MyFirstClassTest.java
package guru99.JUnit; import static org.junit.Assert.*; import org.junit.Test; public class MyFirstClassTest { @Test public void myFirstMethod(){ String str= "JUnit is working fine"; assertEquals("JUnit is working fine",str); } }
TestRunner.java
Для выполнения нашего тестового метода (описанного выше) нам необходимо создать средство запуска тестов. В этом средстве запуска тестов необходимо добавить тестовый класс в качестве параметра. JUnitМетод `runClasses()` ядра. Он вернет результат теста в зависимости от того, пройден он или нет.
Более подробную информацию можно найти в приведенном ниже коде:
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(MyFirstClassTest.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println("Result=="+result.wasSuccessful()); } }
Результат
Как только TestRunner.java При выполнении наших тестовых методов мы получаем результат «пройдено» или «не пройдено». Ниже приведено пояснение к результату:
- В этом примере после выполнения MyFirstClassTest.javaТест пройден, и результат отображается зеленым цветом.
- Если бы произошла ошибка, результат отобразился бы красным цветом, и ошибку можно было бы наблюдать по её появлению. tracе. См. JUnit Ниже представлен графический интерфейс пользователя:


