JUnit - самая популярная среда модульного тестирования в Java. Это явно рекомендуется для модульного тестирования. JUnit не требует сервера для тестирования веб-приложения, что ускоряет процесс тестирования.
Фреймворк JUnit также позволяет быстро и легко создавать тестовые примеры и тестовые данные. Пакет org.Junit состоит из множества интерфейсов и классов для тестирования JUnit, таких как Test, Assert, After, Before и т. Д.
Что такое тестовое приспособление
Прежде чем мы поймем, что такое тестовое приспособление, давайте изучим приведенный ниже код.
Этот код предназначен для выполнения двух тестовых случаев в простом файле.
public class OutputFileTest {частный файловый вывод;output = новый файл (…);output.delete ();public void testFile1 () {// Код для проверки тестового примера 1}output.delete ();output = новый файл (…);public void testFile2 () {// Код для проверки тестового примера 2}output.delete ();}
Здесь несколько вопросов
- Код не читается
- Код нелегко поддерживать.
- Когда набор тестов сложен, код может содержать логические ошибки.
Сравните тот же код с помощью JUnit
открытый класс OutputFileTest{частный файловый вывод;@Before public void createOutputFile (){output = новый файл (…);}@After public void deleteOutputFile (){output.delete ();}@Test public void testFile1 (){// код для цели тестового примера}@Test public void testFile2 (){// код для цели тестового примера}}
Код более читабелен и удобен в обслуживании. Приведенная выше структура кода представляет собой тестовое приспособление.
Тестовое приспособление - это контекст, в котором выполняется тестовый пример. Как правило, испытательные приспособления включают в себя:
- Объекты или ресурсы, доступные для любого тестового примера.
- Необходимые действия, которые делают эти объекты / ресурсы доступными.
- Эти мероприятия
- распределение ( настройка )
- отмена распределения ( разборка ).
Настройка и разборка
- Обычно перед каждым тестовым набором необходимо выполнить несколько повторяющихся задач. Пример: создать соединение с базой данных.
- Точно так же в конце каждого тестового примера могут быть несколько повторяющихся задач. Пример: очистить после завершения выполнения теста.
- JUnit предоставляет аннотации, которые помогают при настройке и демонтаже. Это гарантирует, что ресурсы высвобождаются, и тестовая система находится в состоянии готовности для следующего тестового примера.
Эти аннотации обсуждаются ниже -
Настраивать
Аннотация @Before используется в методе, содержащем код Java, который запускается перед каждым тестовым примером. т.е. он запускается перед каждым выполнением теста.
Разборка (независимо от приговора)
Аннотация @After используется в методе, содержащем java-код, который запускается после каждого тестового примера. Эти методы будут выполняться, даже если в тестовом примере возникнут какие-либо исключения или в случае сбоев утверждения.
Примечание:
- Допускается любое количество перечисленных выше аннотаций.
- Все методы, помеченные @Before, будут запускаться перед каждым тестовым примером, но они могут выполняться в любом порядке.
- Вы можете наследовать методы @Before и @After от суперкласса, Execution выглядит следующим образом: это стандартный процесс выполнения в JUnit.
- Выполните методы @Before в суперклассе
- Выполните методы @Before в этом классе
- Выполните метод @Test в этом классе
- Выполните методы @After в этом классе
- Выполните методы @After в суперклассе
Пример: создание класса с файлом в качестве тестового прибора
открытый класс OutputFileTest{частный файловый вывод;@Before public void createOutputFile (){output = новый файл (…);}@After public void deleteOutputFile (){output.delete ();}@Test public void testFile1 (){// код для цели тестового примера}@Test public void testFile2 (){// код для цели тестового примера}}
В приведенном выше примере цепочка выполнения будет следующей:
- createOutputFile ()
- testFile1 ()
- deleteOutputFile ()
- createOutputFile ()
- testFile2 ()
- deleteOutputFile ()
Предположение: testFile1 () запускается перед testFile2 () - что не гарантируется.
Одноразовая установка
- Можно запустить метод только один раз для всего тестового класса перед выполнением любого из тестов и перед любым методом (ами) @Before .
- «Один раз установка» полезна для запуска серверов, установления связи и т. Д. Закрытие и повторное открытие ресурсов для каждого теста занимает много времени.
- Это можно сделать с помощью аннотации @BeforeClass.
@BeforeClass public static void Method_Name () {// код настройки класса здесь}
Один раз снести
- Подобно однократной настройке, также доступен однократный метод очистки. Он запускается после выполнения всех методов тестового примера и аннотаций @After .
- Это полезно для остановки серверов, закрытия каналов связи и т. Д.
- Это можно сделать с помощью аннотации @AfterClass.
@AfterClass public static void Method_Name (){// здесь код очистки класса}
Наборы тестов JUnit
Если мы хотим выполнить несколько тестов в указанном порядке, это можно сделать, объединив все тесты в одном месте. Это место называется тестовыми наборами. Более подробно о том, как выполнять наборы тестов и как они используются в JUnit, будет рассказано в этом руководстве.
Бегущий по тестам Junit
JUnit предоставляет инструмент для выполнения ваших тестовых примеров.
- Для выполнения этих тестов используется класс JUnitCore .
- Метод runClasses, предоставляемый org.junit.runner.JUnitCore, используется для запуска одного или нескольких тестовых классов.
- Тип возврата этого метода - объект Result ( org.junit.runner.Result ), который используется для доступа к информации о тестах. См. Следующий пример кода для большей ясности.
public class Test {public static void main (String [] args) {Результат result = JUnitCore.runClasses (CreateAndSetName.class);for (Failure failure: result.getFailures ()) {System.out.println (отказ.toString ());}System.out.println (result.wasSuccessful ());}}
В приведенном выше коде объект «результат» обрабатывается для получения сбоев и успешных результатов выполняемых нами тестовых примеров.
Первая программа JUnit
Хорошее знание SDLC, программирования java и основ процесса тестирования программного обеспечения помогает понять программу JUnit.
Давайте разберемся с модульным тестированием на живом примере. Нам нужно создать тестовый класс с тестовым методом, аннотированным @Test, как показано ниже:
MyFirstClassTest.java
package guru99.JUnit;import static org.JUnit.Assert. *;import org.JUnit.Test;public class MyFirstClassTest {@Тестpublic void myFirstMethod () {String str = "JUnit работает нормально";assertEquals ("JUnit работает нормально", str);}}
TestRunner.java
Чтобы выполнить наш метод тестирования (см. Выше), нам нужно создать средство запуска тестов. В средстве выполнения тестов мы должны добавить тестовый класс в качестве параметра в методе runclasses () JUnitCore. Он вернет результат теста в зависимости от того, пройден ли тест или нет.
Подробнее об этом см. В приведенном ниже коде:
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 = JUnitCore.runClasses (MyFirstClassTest.class);for (Failure failure: result.getFailures ()) {System.out.println (отказ.toString ());}System.out.println ("Результат ==" + result.wasSuccessful ());}}
Выход
После того, как TestRunner.java выполнит наши методы тестирования, мы получим результат как неудачный или пройденный. Пожалуйста, найдите ниже объяснение вывода:
- В этом примере после выполнения MyFirstClassTest.java тест пройден, а результат отображается зеленым цветом.
- В случае отказа он должен был бы показать результат как красный, и отказ можно было бы наблюдать в трассировке отказа. См. Ниже интерфейс JUnit:
Резюме :
- JUnit - это фреймворк, который поддерживает несколько аннотаций для идентификации метода, содержащего тест.
- JUnit предоставляет аннотацию под названием @Test, которая сообщает JUnit, что общедоступный метод void, в котором он используется, может выполняться как тестовый пример.
- Тестовое приспособление - это контекст, в котором выполняется тестовый пример.
- Чтобы выполнить несколько тестов в указанном порядке, это можно сделать, объединив все тесты в одном месте. Это место называется тестовыми наборами.
- JUnit предоставляет инструмент для выполнения тестов, в котором мы можем запускать наши тестовые примеры, называемые Test Runner.