JUnit Тестовые случаи @Before @BeforeClass Аннотация

JUnit это самая популярная единица Тестирование рамки в Java. Это явно рекомендуется для Модульное тестирование. JUnit не требуется сервер для тестирования веб-приложения, что делает процесс тестирования быстрым.

JUnit Framework также позволяет быстро и легко создавать тестовые примеры и тестовые данные. орг.Юнит пакет состоит из множества интерфейсов и классов для 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 Тестовый кейс бежит. Обычно испытательные приспособления включают в себя:

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

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

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

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

Установка

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

Снос (независимо от приговора)

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

Примечание:

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

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

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
    }
}

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

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

  1. создатьВыходнойФайл()
  2. тестФайл1()
  3. удалитьВыходнойФайл()
  4. создатьВыходнойФайл()
  5. тестФайл2()
  6. удалитьВыходнойФайл()

Предположение:

testFile1() выполняется раньше testFile2(), что не гарантируется.

Однократная установка

  • Можно запустить метод только один раз для всего тестового класса перед выполнением любого из тестов и перед любым @Перед метод (ы).
  • «Однократная настройка» полезна для запуска серверов, открытия связи и т. д. Закрытие и повторное открытие ресурсов для каждого теста занимает много времени.
  • Это можно сделать с помощью аннотации @BeforeClass in JUnit.
@BeforeClass public static void Method_Name() {	
    // class setup code here	
 }	

Снести только один раз

  • Подобно однократной настройке, также доступен метод однократной очистки. Он запускается после всех методов тестового примера и @После аннотации выполнены.
  • Это полезно для остановки серверов, закрытия каналов связи и т. д.
  • Это можно сделать с помощью @После занятий аннотирование
 @AfterClass public static void Method_Name()	
 {	
    // class cleanup code here	
 }	

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());					
   }		
}      

В приведенном выше коде объект «результат» обрабатывается для получения ошибок и успешных результатов тестовых случаев, которые мы выполняем.

Имя 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 выполняет наши тестовые методы, мы получаем результат как неудачный или пройденный. Ниже приведено объяснение вывода:

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

JUnit Выход программы

Резюме

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