Примеры тестов JUnit @Before @BeforeClass Annotation

Содержание:

Anonim

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 (){// код для цели тестового примера}}

Код более читабелен и удобен в обслуживании. Приведенная выше структура кода представляет собой тестовое приспособление.

Тестовое приспособление - это контекст, в котором выполняется тестовый пример. Как правило, испытательные приспособления включают в себя:

  • Объекты или ресурсы, доступные для любого тестового примера.
  • Необходимые действия, которые делают эти объекты / ресурсы доступными.
  • Эти мероприятия
    1. распределение ( настройка )
    2. отмена распределения ( разборка ).

Настройка и разборка

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

Эти аннотации обсуждаются ниже -

Настраивать

Аннотация @Before используется в методе, содержащем код Java, который запускается перед каждым тестовым примером. т.е. он запускается перед каждым выполнением теста.

Разборка (независимо от приговора)

Аннотация @After используется в методе, содержащем java-код, который запускается после каждого тестового примера. Эти методы будут выполняться, даже если в тестовом примере возникнут какие-либо исключения или в случае сбоев утверждения.

Примечание:

  • Допускается любое количество перечисленных выше аннотаций.
  • Все методы, помеченные @Before, будут запускаться перед каждым тестовым примером, но они могут выполняться в любом порядке.
  • Вы можете наследовать методы @Before и @After от суперкласса, Execution выглядит следующим образом: это стандартный процесс выполнения в JUnit.
  1. Выполните методы @Before в суперклассе
  2. Выполните методы @Before в этом классе
  3. Выполните метод @Test в этом классе
  4. Выполните методы @After в этом классе
  5. Выполните методы @After в суперклассе

Пример: создание класса с файлом в качестве тестового прибора

открытый класс OutputFileTest{частный файловый вывод;@Before public void createOutputFile (){output = новый файл (…);}@After public void deleteOutputFile (){output.delete ();}@Test public void testFile1 (){// код для цели тестового примера}@Test public void testFile2 (){// код для цели тестового примера}}

В приведенном выше примере цепочка выполнения будет следующей:

  1. createOutputFile ()
  2. testFile1 ()
  3. deleteOutputFile ()
  4. createOutputFile ()
  5. testFile2 ()
  6. 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 выполнит наши методы тестирования, мы получим результат как неудачный или пройденный. Пожалуйста, найдите ниже объяснение вывода:

  1. В этом примере после выполнения MyFirstClassTest.java тест пройден, а результат отображается зеленым цветом.
  2. В случае отказа он должен был бы показать результат как красный, и отказ можно было бы наблюдать в трассировке отказа. См. Ниже интерфейс JUnit:

Резюме :

  • JUnit - это фреймворк, который поддерживает несколько аннотаций для идентификации метода, содержащего тест.
  • JUnit предоставляет аннотацию под названием @Test, которая сообщает JUnit, что общедоступный метод void, в котором он используется, может выполняться как тестовый пример.
  • Тестовое приспособление - это контекст, в котором выполняется тестовый пример.
  • Чтобы выполнить несколько тестов в указанном порядке, это можно сделать, объединив все тесты в одном месте. Это место называется тестовыми наборами.
  • JUnit предоставляет инструмент для выполнения тестов, в котором мы можем запускать наши тестовые примеры, называемые Test Runner.