Учебники

JUnit — Краткое руководство

JUnit — Обзор

Тестирование — это процесс проверки функциональности приложения на предмет его соответствия требованиям. Модульное тестирование входит в картину на уровне разработчиков; это тестирование отдельного объекта (класса или метода). Модульное тестирование играет решающую роль в оказании помощи софтверной компании в предоставлении качественных продуктов своим клиентам.

Модульное тестирование может быть выполнено двумя способами — вручную и автоматически.

Ручное тестирование Автоматизированное тестирование
Выполнение тестовых случаев вручную без какой-либо поддержки инструмента называется ручным тестированием. Получение поддержки инструмента и выполнение тестовых случаев с использованием инструмента автоматизации называется автоматизацией тестирования.
Отнимает много времени и утомительно — так как тесты выполняются человеческими ресурсами, это очень медленно и утомительно. Быстро — автоматизация запускает тестовые случаи значительно быстрее, чем человеческие ресурсы.
Огромные инвестиции в человеческие ресурсы — поскольку тестовые примеры должны выполняться вручную, для ручного тестирования требуется больше тестировщиков. Меньше инвестиций в человеческие ресурсы. Тестовые случаи выполняются с использованием средств автоматизации, поэтому для тестирования автоматизации требуется меньше тестеров.
Менее надежный — ручное тестирование менее надежно, так как оно должно учитывать человеческие ошибки. Надежнее — автоматические тесты точны и надежны.
Непрограммируемый — не может быть никакого программирования для написания сложных тестов для извлечения скрытой информации. Программируемый — тестировщики могут программировать сложные тесты, чтобы выявлять скрытую информацию.

Что такое Юнит?

JUnit — это инфраструктура модульного тестирования для языка программирования Java. Он играет решающую роль при разработке на основе тестов и представляет собой семейство платформ модульного тестирования, известных под общим названием xUnit.

JUnit продвигает идею «сначала тестирование, а затем кодирование», которая делает упор на настройке тестовых данных для фрагмента кода, который можно сначала протестировать, а затем реализовать. Этот подход похож на «немного протестировать, немного кодировать, немного протестировать, немного кодировать». Это увеличивает производительность программиста и стабильность программного кода, что, в свою очередь, снижает нагрузку на программиста и время, затрачиваемое на отладку.

Особенности JUnit

  • JUnit — это платформа с открытым исходным кодом, которая используется для написания и запуска тестов.

  • Предоставляет аннотации для определения методов испытаний.

  • Предоставляет утверждения для тестирования ожидаемых результатов.

  • Предоставляет тестовые бегуны для запуска тестов.

  • Тесты JUnit позволяют писать коды быстрее, что повышает качество.

  • Юнит элегантно прост. Это менее сложный и занимает меньше времени.

  • Тесты JUnit можно запускать автоматически, они проверяют свои результаты и предоставляют немедленную обратную связь. Нет необходимости вручную прочесывать отчет с результатами теста.

  • Тесты JUnit могут быть организованы в наборы тестов, содержащие тестовые наборы и даже другие наборы тестов.

  • JUnit отображает ход выполнения теста на зеленой полосе, если тест проходит гладко, и становится красным при сбое теста.

JUnit — это платформа с открытым исходным кодом, которая используется для написания и запуска тестов.

Предоставляет аннотации для определения методов испытаний.

Предоставляет утверждения для тестирования ожидаемых результатов.

Предоставляет тестовые бегуны для запуска тестов.

Тесты JUnit позволяют писать коды быстрее, что повышает качество.

Юнит элегантно прост. Это менее сложный и занимает меньше времени.

Тесты JUnit можно запускать автоматически, они проверяют свои результаты и предоставляют немедленную обратную связь. Нет необходимости вручную прочесывать отчет с результатами теста.

Тесты JUnit могут быть организованы в наборы тестов, содержащие тестовые наборы и даже другие наборы тестов.

JUnit отображает ход выполнения теста на зеленой полосе, если тест проходит гладко, и становится красным при сбое теста.

Что такое модульный тест?

Модульный тестовый пример — это часть кода, которая гарантирует, что другая часть кода (метода) работает так, как ожидается. Для быстрого достижения желаемых результатов требуется тестовая структура. JUnit — это идеальный фреймворк модульного тестирования для языка программирования Java.

Формальный письменный пример модульного теста характеризуется известными входными данными и ожидаемым выходным сигналом, которые вырабатываются до выполнения теста. Известный вход должен проверять предварительное условие, а ожидаемый результат должен проверять постусловие.

Для каждого требования должно быть не менее двух тестовых случаев — один положительный и один отрицательный. Если у требования есть под-требования, у каждого под-требования должно быть по крайней мере два контрольных примера как положительный и отрицательный.

JUnit — настройка среды

Настройка локальной среды

JUnit — это фреймворк для Java, поэтому самое первое требование — установить JDK на вашем компьютере.

Системные требования

JDK 1,5 или выше.
объем памяти Нет минимальных требований.
Дисковое пространство Нет минимальных требований.
Операционная система Нет минимальных требований.

Шаг 1: Проверьте установку Java на вашем компьютере

Прежде всего, откройте консоль и выполните команду Java в зависимости от операционной системы, с которой вы работаете.

Операционные системы задача команда
Windows Открытая командная консоль c: \> Java-версия
Linux Открытый командный терминал $ java-версия
макинтош Открытый терминал машина: ~ Джозеф $ Java-версия

Давайте проверим вывод для всех операционных систем —

Операционные системы Выход
Windows

Java-версия «1.8.0_101»

Java (TM) SE Runtime Environment (сборка 1.8.0_101)

Linux

Java-версия «1.8.0_101»

Java (TM) SE Runtime Environment (сборка 1.8.0_101)

макинтош

Java-версия «1.8.0_101»

Java (TM) SE Runtime Environment (сборка 1.8.0_101)

Java-версия «1.8.0_101»

Java (TM) SE Runtime Environment (сборка 1.8.0_101)

Java-версия «1.8.0_101»

Java (TM) SE Runtime Environment (сборка 1.8.0_101)

Java-версия «1.8.0_101»

Java (TM) SE Runtime Environment (сборка 1.8.0_101)

Если у вас не установлена ​​Java в вашей системе, загрузите Java Software Development Kit (SDK) по следующей ссылке https://www.oracle.com . Мы принимаем Java 1.8.0_101 в качестве установленной версии для этого урока.

Шаг 2: Установите среду JAVA

Установите переменную среды JAVA_HOME, чтобы она указывала на местоположение базовой директории, где установлена ​​Java на вашем компьютере. Например.

Операционные системы Выход
Windows Установите переменную среды JAVA_HOME в C: \ Program Files \ Java \ jdk1.8.0_101
Linux экспорт JAVA_HOME = / usr / local / java-current
макинтош export JAVA_HOME = / Библиотека / Java / Главная

Добавьте местоположение компилятора Java в системный путь.

Операционные системы Выход
Windows Добавьте строку C: \ Program Files \ Java \ jdk1.8.0_101 \ bin в конце системной переменной Path .
Linux экспорт PATH = $ PATH: $ JAVA_HOME / bin /
макинтош не требуется

Проверьте установку Java с помощью команды java -version, как описано выше.

Шаг 3: Скачать архив JUnit

Загрузите последнюю версию JAR-файла JUnit с http://www.junit.org . На момент написания этого руководства мы загрузили файл Junit-4.12.jar и скопировали его в папку C: \> JUnit.

Операционные системы Название архива
Windows junit4.12.jar
Linux junit4.12.jar
макинтош junit4.12.jar

Шаг 4: Установите среду JUnit

Установите переменную среды JUNIT_HOME, чтобы она указывала на местоположение базовой директории, где на вашем компьютере хранится JUNIT jar. Предположим, что мы сохранили файл junit4.12.jar в папке JUNIT.

Sr.No ОС и описание
1

Windows

Установите переменную окружения JUNIT_HOME в C: \ JUNIT

2

Linux

экспорт JUNIT_HOME = / usr / local / JUNIT

3

макинтош

экспорт JUNIT_HOME = / Библиотека / JUNIT

Windows

Установите переменную окружения JUNIT_HOME в C: \ JUNIT

Linux

экспорт JUNIT_HOME = / usr / local / JUNIT

макинтош

экспорт JUNIT_HOME = / Библиотека / JUNIT

Шаг 5: Установите переменную CLASSPATH

Установите переменную среды CLASSPATH, чтобы она указывала на расположение JAR JAR.

Sr.No ОС и описание
1

Windows

Задайте для переменной среды CLASSPATH значение% CLASSPATH%;% JUNIT_HOME% \ junit4.12.jar;.;

2

Linux

export CLASSPATH = $ CLASSPATH: $ JUNIT_HOME / junit4.12.jar :.

3

макинтош

export CLASSPATH = $ CLASSPATH: $ JUNIT_HOME / junit4.12.jar :.

Windows

Задайте для переменной среды CLASSPATH значение% CLASSPATH%;% JUNIT_HOME% \ junit4.12.jar;.;

Linux

export CLASSPATH = $ CLASSPATH: $ JUNIT_HOME / junit4.12.jar :.

макинтош

export CLASSPATH = $ CLASSPATH: $ JUNIT_HOME / junit4.12.jar :.

Шаг 6: Проверка установки JUnit

Создайте файл класса Java с именем TestJunit в C: \> JUNIT_WORKSPACE

import org.junit.Test;
import static org.junit.Assert.assertEquals;

public class TestJunit {
   @Test
	
   public void testAdd() {
      String str = "Junit is working fine";
      assertEquals("Junit is working fine",str);
   }
}

Создайте файл класса Java с именем TestRunner в C: \> JUNIT_WORKSPACE для выполнения тестовых наборов .

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(TestJunit.class);
		
      for (Failure failure : result.getFailures()) {
         System.out.println(failure.toString());
      }
		
      System.out.println(result.wasSuccessful());
   }
}  	

Шаг 7: Проверьте результат

Скомпилируйте классы, используя компилятор javac следующим образом:

C:\JUNIT_WORKSPACE>javac TestJunit.java TestRunner.java

Теперь запустите Test Runner, чтобы увидеть результат следующим образом:

C:\JUNIT_WORKSPACE>java TestRunner

Проверьте вывод.

true

JUnit — Тестовый фреймворк

JUnit — это среда регрессионного тестирования, используемая разработчиками для реализации модульного тестирования в Java, ускорения скорости программирования и повышения качества кода. JUnit Framework может быть легко интегрирован с одним из следующих:

  • Затмение
  • Муравей
  • специалист

Особенности JUnit Test Framework

Тестовый фреймворк JUnit предоставляет следующие важные функции —

  • арматура
  • Тестовые комплекты
  • Тест бегунов
  • JUnit классы

арматура

Fixtures — это фиксированное состояние набора объектов, используемых в качестве основы для выполнения тестов. Цель тестового устройства — обеспечить хорошо известную и фиксированную среду, в которой выполняются тесты, чтобы результаты можно было повторять. Включает в себя —

  • Метод setUp (), который запускается перед каждым вызовом теста.
  • Метод tearDown (), который запускается после каждого метода тестирования.

Давайте проверим один пример —

import junit.framework.*;

public class JavaTest extends TestCase {
   protected int value1, value2;
   
   // assigning the values
   protected void setUp(){
      value1 = 3;
      value2 = 3;
   }

   // test method to add two values
   public void testAdd(){
      double result = value1 + value2;
      assertTrue(result == 6);
   }
}

Test Suites

Набор тестов объединяет несколько примеров модульных тестов и запускает их вместе. В JUnit для запуска тестового набора используются аннотации @RunWith и @Suite. Ниже приведен пример, который использует тестовые классы TestJunit1 & TestJunit2.

import org.junit.runner.RunWith;
import org.junit.runners.Suite;

//JUnit Suite Test
@RunWith(Suite.class)

@Suite.SuiteClasses({ 
   TestJunit1.class ,TestJunit2.class
})

public class JunitTestSuite {
}
import org.junit.Test;
import org.junit.Ignore;
import static org.junit.Assert.assertEquals;

public class TestJunit1 {

   String message = "Robert";	
   MessageUtil messageUtil = new MessageUtil(message);
   
   @Test
   public void testPrintMessage() {	
      System.out.println("Inside testPrintMessage()");    
      assertEquals(message, messageUtil.printMessage());     
   }
}
import org.junit.Test;
import org.junit.Ignore;
import static org.junit.Assert.assertEquals;

public class TestJunit2 {

   String message = "Robert";	
   MessageUtil messageUtil = new MessageUtil(message);
 
   @Test
   public void testSalutationMessage() {
      System.out.println("Inside testSalutationMessage()");
      message = "Hi!" + "Robert";
      assertEquals(message,messageUtil.salutationMessage());
   }
}

Тест бегунов

Test Runner используется для выполнения тестовых случаев. Вот пример, который предполагает, что тестовый класс TestJunit уже существует.

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(TestJunit.class);
		
      for (Failure failure : result.getFailures()) {
         System.out.println(failure.toString());
      }
		
      System.out.println(result.wasSuccessful());
   }
}

JUnit Классы

Классы JUnit являются важными классами, используемыми при написании и тестировании JUnits. Некоторые из важных классов —

  • Assert — Содержит набор методов assert.

  • TestCase — содержит тестовый набор, который определяет устройство для запуска нескольких тестов.

  • TestResult — содержит методы для сбора результатов выполнения контрольного примера.

Assert — Содержит набор методов assert.

TestCase — содержит тестовый набор, который определяет устройство для запуска нескольких тестов.

TestResult — содержит методы для сбора результатов выполнения контрольного примера.

JUnit — Основное использование

Давайте теперь представим базовый пример, демонстрирующий пошаговый процесс использования JUnit.

Создать класс

Создайте Java-класс для тестирования, скажем, MessageUtil.java в C: \> JUNIT_WORKSPACE

/*
* This class prints the given message on console.
*/

public class MessageUtil {

   private String message;

   //Constructor
   //@param message to be printed
	
   public MessageUtil(String message){
      this.message = message;
   }
      
   // prints the message
   public String printMessage(){
      System.out.println(message);
      return message;
   }   
}  

Создать тестовый класс

  • Создайте тестовый класс Java, скажем, TestJunit.java.
  • Добавьте тестовый метод testPrintMessage () в ваш тестовый класс.
  • Добавьте аннотацию @Test в метод testPrintMessage ().
  • Реализуйте условие теста и проверьте условие с помощью API assertEquals из JUnit.

Создайте имя файла класса java TestJunit.java в C: \> JUNIT_WORKSPACE .

import org.junit.Test;
import static org.junit.Assert.assertEquals;

public class TestJunit {
	
   String message = "Hello World";	
   MessageUtil messageUtil = new MessageUtil(message);

   @Test
   public void testPrintMessage() {
      assertEquals(message,messageUtil.printMessage());
   }
}

Создать класс Runner Test

  • Создайте Java-класс TestRunner.
  • Используйте метод runClasses класса JUnitCore JUnit для запуска тестового примера созданного выше тестового класса.
  • Получить результат тестов, запущенных в Result Object.
  • Получите ошибки, используя метод getFailures () объекта Result.
  • Получите успех, используя метод wasSuccessful () объекта Result.

Создайте файл класса Java с именем TestRunner.java в C: \> JUNIT_WORKSPACE для выполнения тестовых примеров.

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(TestJunit.class);
		
      for (Failure failure : result.getFailures()) {
         System.out.println(failure.toString());
      }
		
      System.out.println(result.wasSuccessful());
   }
}  	

Скомпилируйте классы MessageUtil, Test case и Test Runner, используя javac.

C:\JUNIT_WORKSPACE>javac MessageUtil.java TestJunit.java TestRunner.java

Теперь запустите Test Runner, который запустит тестовый набор, определенный в предоставленном классе Test Case.

C:\JUNIT_WORKSPACE>java TestRunner

Проверьте вывод.

Hello World
true

Теперь обновите TestJunit в C: \> JUNIT_WORKSPACE, чтобы тест не прошел . Измените строку сообщения.

import org.junit.Test;
import static org.junit.Assert.assertEquals;

public class TestJunit {
	
   String message = "Hello World";	
   MessageUtil messageUtil = new MessageUtil(message);

   @Test
   public void testPrintMessage() {
      message = "New Word";
      assertEquals(message,messageUtil.printMessage());
   }
}

Давайте оставим остальные классы как есть и попробуем запустить тот же Test Runner.

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(TestJunit.class);
		
      for (Failure failure : result.getFailures()) {
         System.out.println(failure.toString());
      }
		
      System.out.println(result.wasSuccessful());
   }
}

Теперь запустите Test Runner, который запустит тестовый набор, определенный в предоставленном классе Test Case.

C:\JUNIT_WORKSPACE>java TestRunner

Проверьте вывод.

Hello World
testPrintMessage(TestJunit): expected:<[New Wor]d> but was:<[Hello Worl]d>
false

JUnit — API

Самый важный пакет в JUnit — это junit.framework , который содержит все основные классы. Некоторые из важных классов следующие:

Sr.No. Имя класса функциональность
1 утверждать Набор методов assert.
2 Прецедент Тестовый пример определяет прибор для запуска нескольких тестов.
3 Результат испытаний TestResult собирает результаты выполнения контрольного примера.
4 Тестирование TestSuite — это набор тестов.

Assert Class

Ниже приводится объявление для класса org.junit.Assert

public class Assert extends java.lang.Object

Этот класс предоставляет набор методов утверждения, полезных для написания тестов. Только ошибочные утверждения записываются. Вот некоторые из важных методов класса Assert:

Sr.No. Методы и описание
1

void assertEquals (логическое ожидание, логическое фактическое)

Проверяет, что два примитива / объекта равны.

2

void assertFalse (логическое условие)

Проверяет, что условие ложно.

3

void assertNotNull (Объектный объект)

Проверяет, что объект не является нулевым.

4

void assertNull (Объектный объект)

Проверяет, что объект является нулевым.

5

void assertTrue (логическое условие)

Проверяет, что условие верно.

6

void fail ()

Сбой теста без сообщения.

void assertEquals (логическое ожидание, логическое фактическое)

Проверяет, что два примитива / объекта равны.

void assertFalse (логическое условие)

Проверяет, что условие ложно.

void assertNotNull (Объектный объект)

Проверяет, что объект не является нулевым.

void assertNull (Объектный объект)

Проверяет, что объект является нулевым.

void assertTrue (логическое условие)

Проверяет, что условие верно.

void fail ()

Сбой теста без сообщения.

Давайте использовать некоторые из вышеупомянутых методов в примере. Создайте файл класса Java с именем TestJunit1.java в C: \> JUNIT_WORKSPACE .

import org.junit.Test;
import static org.junit.Assert.*;

public class TestJunit1 {
   @Test
   public void testAdd() {
      //test data
      int num = 5;
      String temp = null;
      String str = "Junit is working fine";

      //check for equality
      assertEquals("Junit is working fine", str);
      
      //check for false condition
      assertFalse(num > 6);

      //check for not null value
      assertNotNull(temp);
   }
}

Затем создайте файл класса java с именем TestRunner1.java в C: \> JUNIT_WORKSPACE для выполнения тестовых примеров.

import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;

public class TestRunner1 {
   public static void main(String[] args) {
      Result result = JUnitCore.runClasses(TestJunit1.class);
		
      for (Failure failure : result.getFailures()) {
         System.out.println(failure.toString());
      }
		
      System.out.println(result.wasSuccessful());
   }
}  	

Скомпилируйте тестовый набор и классы Runner, используя javac.

C:\JUNIT_WORKSPACE>javac TestJunit1.java TestRunner1.java

Теперь запустите Test Runner, который запустит тестовый набор, определенный в предоставленном классе Test Case.

C:\JUNIT_WORKSPACE>java TestRunner1

Проверьте вывод.

true

TestCase Class

Ниже приводится объявление для класса org.junit.TestCase

public abstract class TestCase extends Assert implements Test

Тестовый пример определяет прибор для запуска нескольких тестов. Вот некоторые из важных методов класса TestCase :

Sr.No. Методы и описание
1

int countTestCases ()

Подсчитывает количество тестов, выполненных при запуске (результат TestResult).

2

TestResult createResult ()

Создает объект TestResult по умолчанию.

3

Строка getName ()

Получает имя TestCase.

4

TestResult run ()

Удобный метод для запуска этого теста, собирающий результаты с помощью объекта TestResult по умолчанию.

5

void run (результат TestResult)

Запускает контрольный пример и собирает результаты в TestResult.

6

void setName (String name)

Устанавливает имя TestCase.

7

void setUp ()

Настраивает прибор, например, открывает сетевое соединение.

8

void tearDown ()

Срывает прибор, например, закрывает сетевое соединение.

9

Строка toString ()

Возвращает строковое представление контрольного примера.

int countTestCases ()

Подсчитывает количество тестов, выполненных при запуске (результат TestResult).

TestResult createResult ()

Создает объект TestResult по умолчанию.

Строка getName ()

Получает имя TestCase.

TestResult run ()

Удобный метод для запуска этого теста, собирающий результаты с помощью объекта TestResult по умолчанию.

void run (результат TestResult)

Запускает контрольный пример и собирает результаты в TestResult.

void setName (String name)

Устанавливает имя TestCase.

void setUp ()

Настраивает прибор, например, открывает сетевое соединение.

void tearDown ()

Срывает прибор, например, закрывает сетевое соединение.

Строка toString ()

Возвращает строковое представление контрольного примера.

Давайте использовать некоторые из вышеупомянутых методов в примере. Создайте файл класса Java с именем TestJunit2.java в C: \> JUNIT_WORKSPACE.

import junit.framework.TestCase;
import org.junit.Before;
import org.junit.Test;

public class TestJunit2 extends TestCase  {
   protected double fValue1;
   protected double fValue2;
   
   @Before 
   public void setUp() {
      fValue1 = 2.0;
      fValue2 = 3.0;
   }
	
   @Test
   public void testAdd() {
      //count the number of test cases
      System.out.println("No of Test Case = "+ this.countTestCases());
		
      //test getName 
      String name = this.getName();
      System.out.println("Test Case Name = "+ name);

      //test setName
      this.setName("testNewAdd");
      String newName = this.getName();
      System.out.println("Updated Test Case Name = "+ newName);
   }
	
   //tearDown used to close the connection or clean up activities
   public void tearDown(  ) {
   }
}

Затем создайте файл класса Java с именем TestRunner2.java в C: \> JUNIT_WORKSPACE для выполнения тестовых примеров.

import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;

public class TestRunner2 {
   public static void main(String[] args) {
      Result result = JUnitCore.runClasses(TestJunit2.class);
		
      for (Failure failure : result.getFailures()) {
         System.out.println(failure.toString());
      }
		
      System.out.println(result.wasSuccessful());
   }
} 

Скомпилируйте тестовый набор и классы Runner, используя javac.

C:\JUNIT_WORKSPACE>javac TestJunit2.java TestRunner2.java

Теперь запустите Test Runner, который запустит тестовый набор, определенный в предоставленном классе Test Case.

C:\JUNIT_WORKSPACE>java TestRunner2

Проверьте вывод.

No of Test Case = 1
Test Case Name = testAdd
Updated Test Case Name = testNewAdd
true

TestResult Class

Ниже приводится объявление для класса org.junit.TestResult.

public class TestResult extends Object

TestResult собирает результаты выполнения контрольного примера. Это экземпляр шаблона Collecting Parameter. Тестовая структура различает сбои и ошибки. Ожидается сбой и проверяется с помощью утверждений. Ошибки — это непредвиденные проблемы, такие как ArrayIndexOutOfBoundsException. Вот некоторые из важных методов класса TestResult :

Sr.No. Методы и описание
1

void addError (Тестовый тест, Throwable t)

Добавляет ошибку в список ошибок.

2

void addFailure (Тестовый тест, AssertionFailedError t)

Добавляет ошибку в список ошибок.

3

void endTest (Тестовый тест)

Сообщает результат, что тест был завершен.

4

int errorCount ()

Получает количество обнаруженных ошибок.

5

Перечисление <TestFailure> ошибки ()

Возвращает перечисление для ошибок.

6

int failCount ()

Получает количество обнаруженных сбоев.

7

void run (тестовый тест)

Запускает TestCase.

8

int runCount ()

Получает количество выполненных тестов.

9

void startTest (Тестовый тест)

Сообщает результат, что тест будет запущен.

10

остановка ()

Отмечает, что тестовый прогон должен быть остановлен.

void addError (Тестовый тест, Throwable t)

Добавляет ошибку в список ошибок.

void addFailure (Тестовый тест, AssertionFailedError t)

Добавляет ошибку в список ошибок.

void endTest (Тестовый тест)

Сообщает результат, что тест был завершен.

int errorCount ()

Получает количество обнаруженных ошибок.

Перечисление <TestFailure> ошибки ()

Возвращает перечисление для ошибок.

int failCount ()

Получает количество обнаруженных сбоев.

void run (тестовый тест)

Запускает TestCase.

int runCount ()

Получает количество выполненных тестов.

void startTest (Тестовый тест)

Сообщает результат, что тест будет запущен.

остановка ()

Отмечает, что тестовый прогон должен быть остановлен.

Создайте файл класса Java с именем TestJunit3.java в C: \> JUNIT_WORKSPACE.

import org.junit.Test;
import junit.framework.AssertionFailedError;
import junit.framework.TestResult;

public class TestJunit3 extends TestResult {
   // add the error
   public synchronized void addError(Test test, Throwable t) {
      super.addError((junit.framework.Test) test, t);
   }

   // add the failure
   public synchronized void addFailure(Test test, AssertionFailedError t) {
      super.addFailure((junit.framework.Test) test, t);
   }
	
   @Test
   public void testAdd() {
      // add any test
   }
   
   // Marks that the test run should stop.
   public synchronized void stop() {
      //stop the test here
   }
}

Затем создайте файл класса Java с именем TestRunner3.java в C: \> JUNIT_WORKSPACE для выполнения тестовых примеров.

import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;

public class TestRunner3 {
   public static void main(String[] args) {
      Result result = JUnitCore.runClasses(TestJunit3.class);

      for (Failure failure : result.getFailures()) {
         System.out.println(failure.toString());
      }
		
      System.out.println(result.wasSuccessful());
   }
}  	

Скомпилируйте тестовый набор и классы Runner, используя javac.

C:\JUNIT_WORKSPACE>javac TestJunit3.java TestRunner3.java

Теперь запустите Test Runner, который запустит тестовый набор, определенный в предоставленном классе Test Case.

C:\JUNIT_WORKSPACE>java TestRunner3

Проверьте вывод.

true

TestSuite Class

Ниже приводится объявление для класса org.junit.TestSuite :

public class TestSuite extends Object implements Test

TestSuite — это совокупность тестов. Он запускает коллекцию тестовых случаев. Вот некоторые из важных методов класса TestSuite :

Sr.No. Методы и описание
1

void addTest (Тестовый тест)

Добавляет тест в комплект.

2

void addTestSuite (Class <? extends TestCase> testClass)

Добавляет тесты из данного класса в комплект.

3

int countTestCases ()

Подсчитывает количество тестов, которые будут выполнены этим тестом.

4

Строка getName ()

Возвращает название сюиты.

5

void run (результат TestResult)

Запускает тесты и собирает их результаты в TestResult.

6

void setName (String name)

Устанавливает название сюиты.

7

Test testAt (int index)

Возвращает тест по заданному индексу.

8

int testCount ()

Возвращает количество тестов в этом наборе.

9

статическое тестовое предупреждение (строковое сообщение)

Возвращает тест, который не пройден, и регистрирует предупреждающее сообщение.

void addTest (Тестовый тест)

Добавляет тест в комплект.

void addTestSuite (Class <? extends TestCase> testClass)

Добавляет тесты из данного класса в комплект.

int countTestCases ()

Подсчитывает количество тестов, которые будут выполнены этим тестом.

Строка getName ()

Возвращает название сюиты.

void run (результат TestResult)

Запускает тесты и собирает их результаты в TestResult.

void setName (String name)

Устанавливает название сюиты.

Test testAt (int index)

Возвращает тест по заданному индексу.

int testCount ()

Возвращает количество тестов в этом наборе.

статическое тестовое предупреждение (строковое сообщение)

Возвращает тест, который не пройден, и регистрирует предупреждающее сообщение.

Создайте файл класса Java с именем JunitTestSuite.java в C: \> JUNIT_WORKSPACE, чтобы создать набор тестов.

import junit.framework.*;

public class JunitTestSuite {
   public static void main(String[] a) {
      // add the test's in the suite
      TestSuite suite = new TestSuite(TestJunit1.class, TestJunit2.class, TestJunit3.class );
      TestResult result = new TestResult();
      suite.run(result);
      System.out.println("Number of test cases = " + result.runCount());
   }
}

Скомпилируйте классы Test Suite, используя javac.

C:\JUNIT_WORKSPACE>javac JunitTestSuite.java 

Теперь запустите Test Suite.

C:\JUNIT_WORKSPACE>java JunitTestSuite

Проверьте вывод.

No of Test Case = 1
Test Case Name = testAdd
Updated Test Case Name = testNewAdd
Number of test cases = 3

JUnit — Написание теста

Здесь мы увидим один полный пример тестирования JUnit с использованием класса POJO, класса бизнес-логики и класса тестирования, который будет запускаться исполнителем теста.

Создайте EmployeeDetails.java в C: \> JUNIT_WORKSPACE, который является классом POJO.

public class EmployeeDetails {

   private String name;
   private double monthlySalary;
   private int age;
   
   /**
   * @return the name
   */
	
   public String getName() {
      return name;
   }
	
   /**
   * @param name the name to set
   */
	
   public void setName(String name) {
      this.name = name;
   }
	
   /**
   * @return the monthlySalary
   */
	
   public double getMonthlySalary() {
      return monthlySalary;
   }
	
   /**
   * @param monthlySalary the monthlySalary to set
   */
	
   public void setMonthlySalary(double monthlySalary) {
      this.monthlySalary = monthlySalary;
   }
	
   /**
   * @return the age
   */
   public int getAge() {
      return age;
   }
	
   /**
   * @param age the age to set
   */
   public void setAge(int age) {
      this.age = age;
   }
}

Класс EmployeeDetails используется для —

  • получить / установить значение имени сотрудника.
  • получить / установить значение месячной зарплаты сотрудника.
  • получить / установить значение возраста работника.

Создайте файл с именем EmpBusinessLogic.java в C: \> JUNIT_WORKSPACE, который содержит бизнес-логику.

public class EmpBusinessLogic {
   // Calculate the yearly salary of employee
   public double calculateYearlySalary(EmployeeDetails employeeDetails) {
      double yearlySalary = 0;
      yearlySalary = employeeDetails.getMonthlySalary() * 12;
      return yearlySalary;
   }
	
   // Calculate the appraisal amount of employee
   public double calculateAppraisal(EmployeeDetails employeeDetails) {
      double appraisal = 0;
		
      if(employeeDetails.getMonthlySalary() < 10000){
         appraisal = 500;
      }else{
         appraisal = 1000;
      }
		
      return appraisal;
   }
}

Класс EmpBusinessLogic используется для расчета —

  • годовая зарплата работника.
  • сумма оценки работника.

Создайте файл с именем TestEmployeeDetails.java в C: \> JUNIT_WORKSPACE, который содержит тестовые наборы для тестирования.

import org.junit.Test;
import static org.junit.Assert.assertEquals;

public class TestEmployeeDetails {
   EmpBusinessLogic empBusinessLogic = new EmpBusinessLogic();
   EmployeeDetails employee = new EmployeeDetails();

   //test to check appraisal
   @Test
   public void testCalculateAppriasal() {
      employee.setName("Rajeev");
      employee.setAge(25);
      employee.setMonthlySalary(8000);
		
      double appraisal = empBusinessLogic.calculateAppraisal(employee);
      assertEquals(500, appraisal, 0.0);
   }

   // test to check yearly salary
   @Test
   public void testCalculateYearlySalary() {
      employee.setName("Rajeev");
      employee.setAge(25);
      employee.setMonthlySalary(8000);
		
      double salary = empBusinessLogic.calculateYearlySalary(employee);
      assertEquals(96000, salary, 0.0);
   }
}

Класс TestEmployeeDetails используется для тестирования методов класса EmpBusinessLogic . Это

  • проверяет годовую заработную плату работника.
  • проверяет сумму оценки работника.

Затем создайте Java-класс с именем TestRunner.java в C: \> JUNIT_WORKSPACE для выполнения тестовых примеров.

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(TestEmployeeDetails.class);
		
      for (Failure failure : result.getFailures()) {
         System.out.println(failure.toString());
      }
		
      System.out.println(result.wasSuccessful());
   }
} 

Скомпилируйте тестовый набор и классы Runner, используя javac.

C:\JUNIT_WORKSPACE>javac EmployeeDetails.java 
EmpBusinessLogic.java TestEmployeeDetails.java TestRunner.java

Теперь запустите Test Runner, который запустит тестовый набор, определенный в предоставленном классе Test Case.

C:\JUNIT_WORKSPACE>java TestRunner

Проверьте вывод.

true

JUnit — Использование утверждения

Утверждение

Все утверждения находятся в классе Assert.

public class Assert extends java.lang.Object

Этот класс предоставляет набор методов утверждения, полезных для написания тестов. Только ошибочные утверждения записываются. Вот некоторые из важных методов класса Assert:

Sr.No. Методы и описание
1

void assertEquals (логическое ожидание, логическое фактическое)

Проверяет, что два примитива / объекта равны.

2

void assertTrue (логическое условие)

Проверяет, что условие верно.

3

void assertFalse (логическое условие)

Проверяет, что условие ложно.

4

void assertNotNull (Объектный объект)

Проверяет, что объект не является нулевым.

5

void assertNull (Объектный объект)

Проверяет, что объект является нулевым.

6

void assertSame (object1, object2)

Метод assertSame () проверяет, указывают ли две ссылки на один и тот же объект.

7

void assertNotSame (object1, object2)

Метод assertNotSame () проверяет, не ссылаются ли две ссылки на один и тот же объект.

8

void assertArrayEquals (pectedArray, resultArray);

Метод assertArrayEquals () проверит, равны ли два массива друг другу.

void assertEquals (логическое ожидание, логическое фактическое)

Проверяет, что два примитива / объекта равны.

void assertTrue (логическое условие)

Проверяет, что условие верно.

void assertFalse (логическое условие)

Проверяет, что условие ложно.

void assertNotNull (Объектный объект)

Проверяет, что объект не является нулевым.

void assertNull (Объектный объект)

Проверяет, что объект является нулевым.

void assertSame (object1, object2)

Метод assertSame () проверяет, указывают ли две ссылки на один и тот же объект.

void assertNotSame (object1, object2)

Метод assertNotSame () проверяет, не ссылаются ли две ссылки на один и тот же объект.

void assertArrayEquals (pectedArray, resultArray);

Метод assertArrayEquals () проверит, равны ли два массива друг другу.

Давайте использовать некоторые из вышеупомянутых методов в примере. Создайте файл класса Java с именем TestAssertions.java в C: \> JUNIT_WORKSPACE.

import org.junit.Test;
import static org.junit.Assert.*;

public class TestAssertions {

   @Test
   public void testAssertions() {
      //test data
      String str1 = new String ("abc");
      String str2 = new String ("abc");
      String str3 = null;
      String str4 = "abc";
      String str5 = "abc";
		
      int val1 = 5;
      int val2 = 6;

      String[] expectedArray = {"one", "two", "three"};
      String[] resultArray =  {"one", "two", "three"};

      //Check that two objects are equal
      assertEquals(str1, str2);

      //Check that a condition is true
      assertTrue (val1 < val2);

      //Check that a condition is false
      assertFalse(val1 > val2);

      //Check that an object isn't null
      assertNotNull(str1);

      //Check that an object is null
      assertNull(str3);

      //Check if two object references point to the same object
      assertSame(str4,str5);

      //Check if two object references not point to the same object
      assertNotSame(str1,str3);

      //Check whether two arrays are equal to each other.
      assertArrayEquals(expectedArray, resultArray);
   }
}

Затем создайте файл класса Java с именем TestRunner.java в C: \> JUNIT_WORKSPACE для выполнения тестовых примеров.

import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;

public class TestRunner2 {
   public static void main(String[] args) {
      Result result = JUnitCore.runClasses(TestAssertions.class);
		
      for (Failure failure : result.getFailures()) {
         System.out.println(failure.toString());
      }
		
      System.out.println(result.wasSuccessful());
   }
} 

Скомпилируйте классы Test case и Test Runner, используя javac.

C:\JUNIT_WORKSPACE>javac TestAssertions.java TestRunner.java

Теперь запустите Test Runner, который запустит тестовый набор, определенный в предоставленном классе Test Case.

C:\JUNIT_WORKSPACE>java TestRunner

Проверьте вывод.

true

аннотирование

Аннотации похожи на метатеги, которые вы можете добавить в свой код и применять их к методам или в классе. Эти аннотации в JUnit предоставляют следующую информацию о методах тестирования —

  • какие методы будут выполняться до и после методов тестирования.
  • какие методы выполняются до и после всех методов, и.
  • какие методы или классы будут игнорироваться во время выполнения.

В следующей таблице приведен список аннотаций и их значения в JUnit —

Sr.No. Аннотация и описание
1

@Тестовое задание

Аннотация Test сообщает JUnit, что открытый метод void, к которому он присоединен, может быть запущен как тестовый пример.

2

@До

Несколько тестов нуждаются в похожих объектах, созданных до их запуска. Аннотирование открытого метода void с помощью @Before приводит к тому, что этот метод запускается перед каждым методом Test.

3

@После

Если вы выделяете внешние ресурсы в методе «До», вам необходимо освободить их после выполнения теста. Аннотирование открытого метода void с помощью @After приводит к тому, что этот метод запускается после метода Test.

4

@BeforeClass

Аннотирование открытого статического метода void с помощью @BeforeClass заставляет его запускаться один раз перед любым из тестовых методов в классе.

5

@После школы

Это выполнит метод после завершения всех тестов. Это может быть использовано для выполнения действий по очистке.

6

@Ignore

Аннотация Ignore используется для игнорирования теста, и этот тест не будет выполнен.

@Тестовое задание

Аннотация Test сообщает JUnit, что открытый метод void, к которому он присоединен, может быть запущен как тестовый пример.

@До

Несколько тестов нуждаются в похожих объектах, созданных до их запуска. Аннотирование открытого метода void с помощью @Before приводит к тому, что этот метод запускается перед каждым методом Test.

@После

Если вы выделяете внешние ресурсы в методе «До», вам необходимо освободить их после выполнения теста. Аннотирование открытого метода void с помощью @After приводит к тому, что этот метод запускается после метода Test.

@BeforeClass

Аннотирование открытого статического метода void с помощью @BeforeClass заставляет его запускаться один раз перед любым из тестовых методов в классе.

@После школы

Это выполнит метод после завершения всех тестов. Это может быть использовано для выполнения действий по очистке.

@Ignore

Аннотация Ignore используется для игнорирования теста, и этот тест не будет выполнен.

Создайте файл Java-класса с именем JunitAnnotation.java в C: \> JUNIT_WORKSPACE для проверки аннотации.

import org.junit.After;
import org.junit.AfterClass;

import org.junit.Before;
import org.junit.BeforeClass;

import org.junit.Ignore;
import org.junit.Test;

public class JunitAnnotation {
	
   //execute before class
   @BeforeClass
   public static void beforeClass() {
      System.out.println("in before class");
   }

   //execute after class
   @AfterClass
   public static void  afterClass() {
      System.out.println("in after class");
   }

   //execute before test
   @Before
   public void before() {
      System.out.println("in before");
   }
	
   //execute after test
   @After
   public void after() {
      System.out.println("in after");
   }
	
   //test case
   @Test
   public void test() {
      System.out.println("in test");
   }
	
   //test case ignore and will not execute
   @Ignore
   public void ignoreTest() {
      System.out.println("in ignore test");
   }
}

Затем создайте файл класса Java с именем TestRunner.java в C: \> JUNIT_WORKSPACE для выполнения аннотаций.

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(JunitAnnotation.class);
		
      for (Failure failure : result.getFailures()) {
         System.out.println(failure.toString());
      }
		
      System.out.println(result.wasSuccessful());
   }
} 

Скомпилируйте классы Test case и Test Runner, используя javac.

C:\JUNIT_WORKSPACE>javac JunitAnnotation.java TestRunner.java

Теперь запустите Test Runner, который запустит тестовый набор, определенный в предоставленном классе Test Case.

C:\JUNIT_WORKSPACE>java TestRunner

Проверьте вывод.

in before class
in before
in test
in after
in after class
true

JUnit — процедура исполнения

В этой главе описывается процедура выполнения методов в JUnit, которая определяет порядок вызываемых методов. Ниже обсуждается процедура выполнения методов API тестирования JUnit с примером.

Создайте файл Java-класса с именем ExecutionProcedureJunit.java в C: \> JUNIT_WORKSPACE для проверки аннотации.

import org.junit.After;
import org.junit.AfterClass;

import org.junit.Before;
import org.junit.BeforeClass;

import org.junit.Ignore;
import org.junit.Test;

public class ExecutionProcedureJunit {
	
   //execute only once, in the starting 
   @BeforeClass
   public static void beforeClass() {
      System.out.println("in before class");
   }

   //execute only once, in the end
   @AfterClass
   public static void  afterClass() {
      System.out.println("in after class");
   }

   //execute for each test, before executing test
   @Before
   public void before() {
      System.out.println("in before");
   }
	
   //execute for each test, after executing test
   @After
   public void after() {
      System.out.println("in after");
   }
	
   //test case 1
   @Test
   public void testCase1() {
      System.out.println("in test case 1");
   }

   //test case 2
   @Test
   public void testCase2() {
      System.out.println("in test case 2");
   }
}

Затем создайте файл класса Java с именем TestRunner.java в C: \> JUNIT_WORKSPACE для выполнения аннотаций.

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(ExecutionProcedureJunit.class);

      for (Failure failure : result.getFailures()) {
         System.out.println(failure.toString());
      }
		
      System.out.println(result.wasSuccessful());
   }
} 

Скомпилируйте классы Test case и Test Runner, используя javac.

C:\JUNIT_WORKSPACE>javac ExecutionProcedureJunit.java TestRunner.java

Теперь запустите Test Runner, который запустит тестовый набор, определенный в предоставленном классе Test Case.

C:\JUNIT_WORKSPACE>java TestRunner

Проверьте вывод.

in before class
in before
in test case 1
in after
in before
in test case 2
in after
in after class

Смотрите вышеприведенный вывод. Процедура выполнения выглядит следующим образом —

  • Прежде всего, метод beforeClass () выполняется только один раз.
  • Метод afterClass () выполняется только один раз.
  • Метод before () выполняется для каждого тестового примера, но перед его выполнением.
  • Метод after () выполняется для каждого тестового случая, но после выполнения тестового случая.
  • В промежутке между before () и after () выполняется каждый тест.

JUnit — Выполнение тестов

Тестовые случаи выполняются с использованием класса JUnitCore . JUnitCore — это фасад для запуска тестов. Он поддерживает запуск тестов JUnit 4, тестов JUnit 3.8.x и их смесей. Чтобы запустить тесты из командной строки, запустите java org.junit.runner.JUnitCore <TestClass>. Для однократных тестовых прогонов используйте статический метод runClasses (Class []).

Ниже приводится объявление для класса org.junit.runner.JUnitCore :

public class JUnitCore extends java.lang.Object

Здесь мы увидим, как выполнить тесты с помощью JUnitCore.

Создать класс

Создайте Java-класс для тестирования, скажем, MessageUtil.java , в C: \> JUNIT_WORKSPACE.

/*
* This class prints the given message on console.
*/

public class MessageUtil {

   private String message;

   //Constructor
   //@param message to be printed
   public MessageUtil(String message){
      this.message = message;
   }
      
   // prints the message
   public String printMessage(){
      System.out.println(message);
      return message;
   }   
	
}  

Создать тестовый класс

  • Создайте тестовый класс Java, скажем, TestJunit.java.

  • Добавьте тестовый метод testPrintMessage () в ваш тестовый класс.

  • Добавьте аннотацию @Test в метод testPrintMessage ().

  • Реализуйте условие теста и проверьте условие с помощью API assertEquals из JUnit.

Создайте тестовый класс Java, скажем, TestJunit.java.

Добавьте тестовый метод testPrintMessage () в ваш тестовый класс.

Добавьте аннотацию @Test в метод testPrintMessage ().

Реализуйте условие теста и проверьте условие с помощью API assertEquals из JUnit.

Создайте файл класса Java с именем TestJunit.java в C: \> JUNIT_WORKSPACE.

import org.junit.Test;
import static org.junit.Assert.assertEquals;

public class TestJunit {
	
   String message = "Hello World";	
   MessageUtil messageUtil = new MessageUtil(message);

   @Test
   public void testPrintMessage() {
      assertEquals(message,messageUtil.printMessage());
   }
}

Создать класс Runner Test

Теперь создайте файл класса Java с именем TestRunner.java в C: \> JUNIT_WORKSPACE, чтобы выполнить тестовые сценарии. Он импортирует класс JUnitCore и использует метод runClasses (), который принимает имя тестового класса в качестве параметра.

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(TestJunit.class);
		
      for (Failure failure : result.getFailures()) {
         System.out.println(failure.toString());
      }
		
      System.out.println(result.wasSuccessful());
   }
}  	

Скомпилируйте классы Test case и Test Runner, используя javac.

C:\JUNIT_WORKSPACE>javac MessageUtil.java TestJunit.java TestRunner.java

Теперь запустите Test Runner, который запустит тестовый набор, определенный в предоставленном классе Test Case.

C:\JUNIT_WORKSPACE>java TestRunner

Проверьте вывод.

Hello World
true

JUnit — Suite Test

Набор тестов используется для объединения нескольких тестовых случаев и их запуска. В JUnit аннотации @RunWith и @Suite используются для запуска тестов комплекта. В этой главе приведен пример с двумя классами тестирования, TestJunit1 и TestJunit2 , которые работают вместе с помощью Test Suite.

Создать класс

Создайте Java-класс для тестирования, скажем, MessageUtil.java в C: \> JUNIT_WORKSPACE.

/*
* This class prints the given message on console.
*/

public class MessageUtil {

   private String message;

   //Constructor
   //@param message to be printed
   public MessageUtil(String message){
      this.message = message; 
   }

   // prints the message
   public String printMessage(){
      System.out.println(message);
      return message;
   }   

   // add "Hi!" to the message
   public String salutationMessage(){
      message = "Hi!" + message;
      System.out.println(message);
      return message;
   }   
}  	

Создать классы теста

Создайте файл класса Java с именем TestJunit1.java в C: \> JUNIT_WORKSPACE.

import org.junit.Test;
import org.junit.Ignore;
import static org.junit.Assert.assertEquals;

public class TestJunit1 {

   String message = "Robert";	
   MessageUtil messageUtil = new MessageUtil(message);
   
   @Test
   public void testPrintMessage() {	
      System.out.println("Inside testPrintMessage()");    
      assertEquals(message, messageUtil.printMessage());     
   }
}

Создайте файл класса Java с именем TestJunit2.java в C: \> JUNIT_WORKSPACE.

import org.junit.Test;
import org.junit.Ignore;
import static org.junit.Assert.assertEquals;

public class TestJunit2 {

   String message = "Robert";	
   MessageUtil messageUtil = new MessageUtil(message);
 
   @Test
   public void testSalutationMessage() {
      System.out.println("Inside testSalutationMessage()");
      message = "Hi!" + "Robert";
      assertEquals(message,messageUtil.salutationMessage());
   }
}

Создать класс Test Suite

  • Создайте класс Java.
  • Прикрепите @RunWith (Suite.class) Аннотация с классом.
  • Добавьте ссылку на тестовые классы JUnit, используя аннотацию @ Suite.SuiteClasses.

Создайте файл класса Java с именем TestSuite.java в C: \> JUNIT_WORKSPACE, чтобы выполнить тестовые сценарии.

import org.junit.runner.RunWith;
import org.junit.runners.Suite;

@RunWith(Suite.class)

@Suite.SuiteClasses({
   TestJunit1.class,
   TestJunit2.class
})

public class JunitTestSuite {   
}  	

Создать класс Runner Test

Создайте файл класса Java с именем TestRunner.java в C: \> JUNIT_WORKSPACE для выполнения тестовых примеров.

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(JunitTestSuite.class);

      for (Failure failure : result.getFailures()) {
         System.out.println(failure.toString());
      }
		
      System.out.println(result.wasSuccessful());
   }
}  	

Скомпилируйте все классы java, используя javac.

C:\JUNIT_WORKSPACE>javac MessageUtil.java TestJunit1.java 
TestJunit2.java JunitTestSuite.java TestRunner.java

Теперь запустите Test Runner, который запустит тестовый набор, определенный в предоставленном классе Test Case.

C:\JUNIT_WORKSPACE>java TestRunner

Проверьте вывод.

Inside testPrintMessage()
Robert
Inside testSalutationMessage()
Hi Robert
true

JUnit — Игнорировать тест

Иногда бывает так, что наш код не полностью готов во время выполнения тестового примера. В результате контрольный пример не пройден. Аннотация @Ignore помогает в этом сценарии.

  • Тестовый метод, помеченный @Ignore, не будет выполнен.

  • Если тестовый класс помечен @Ignore, то ни один из его тестовых методов не будет выполнен.

Тестовый метод, помеченный @Ignore, не будет выполнен.

Если тестовый класс помечен @Ignore, то ни один из его тестовых методов не будет выполнен.

Теперь давайте посмотрим @Ignore в действии.

Создать класс

Создайте Java-класс для тестирования, скажем, MessageUtil.java в C: \> JUNIT_WORKSPACE.

/*
* This class prints the given message on console.
*/

public class MessageUtil {

   private String message;

   //Constructor
   //@param message to be printed
   public MessageUtil(String message){
      this.message = message; 
   }

   // prints the message
   public String printMessage(){
      System.out.println(message);
      return message;
   }   

   // add "Hi!" to the message
   public String salutationMessage(){
      message = "Hi!" + message;
      System.out.println(message);
      return message;
   }   
	
}  

Создать тестовый класс

  • Создайте тестовый класс Java, скажем, TestJunit.java.

  • Добавьте тестовый метод testPrintMessage () или testSalutationMessage () в ваш тестовый класс.

  • Добавьте аннотацию @Ignore в метод testPrintMessage ().

Создайте тестовый класс Java, скажем, TestJunit.java.

Добавьте тестовый метод testPrintMessage () или testSalutationMessage () в ваш тестовый класс.

Добавьте аннотацию @Ignore в метод testPrintMessage ().

Создайте файл класса Java с именем TestJunit.java в C: \ JUNIT_WORKSPACE.

import org.junit.Test;
import org.junit.Ignore;
import static org.junit.Assert.assertEquals;

public class TestJunit {

   String message = "Robert";	
   MessageUtil messageUtil = new MessageUtil(message);
   
   @Ignore
   @Test
   public void testPrintMessage() {
      System.out.println("Inside testPrintMessage()");
      message = "Robert";
      assertEquals(message,messageUtil.printMessage());
   }

   @Test
   public void testSalutationMessage() {
      System.out.println("Inside testSalutationMessage()");
      message = "Hi!" + "Robert";
      assertEquals(message,messageUtil.salutationMessage());
   }
	
}

Создать класс Runner Test

Создайте файл класса Java с именем TestRunner.java в C: \> JUNIT_WORKSPACE для выполнения тестовых примеров.

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(TestJunit.class);

      for (Failure failure : result.getFailures()) {
         System.out.println(failure.toString());
      }
		
      System.out.println(result.wasSuccessful());
   }
}  	

Скомпилируйте классы MessageUtil, Test case и Test Runner, используя javac.

C:\JUNIT_WORKSPACE>javac MessageUtil.java TestJunit.java TestRunner.java

Теперь запустите Test Runner, который не будет запускать тестовый набор testPrintMessage (), определенный в предоставленном классе Test Case.

C:\JUNIT_WORKSPACE>java TestRunner

Проверьте вывод. testPrintMessage () контрольный пример не проверен.

Inside testSalutationMessage()
Hi!Robert
true

Теперь обновите TestJunit в C: \> JUNIT_WORKSPACE, чтобы игнорировать все тестовые случаи. Добавьте @Ignore на уровне класса.

import org.junit.Test;
import org.junit.Ignore;
import static org.junit.Assert.assertEquals;

@Ignore
public class TestJunit {

   String message = "Robert";	
   MessageUtil messageUtil = new MessageUtil(message);
     
   @Test
   public void testPrintMessage() {
      System.out.println("Inside testPrintMessage()");
      message = "Robert";
      assertEquals(message,messageUtil.printMessage());
   }

   @Test
   public void testSalutationMessage() {
      System.out.println("Inside testSalutationMessage()");
      message = "Hi!" + "Robert";
      assertEquals(message,messageUtil.salutationMessage());
   }
	
}

Скомпилируйте контрольный пример, используя javac.

C:\JUNIT_WORKSPACE>javac TestJunit.java

Оставьте тестового бегуна без изменений следующим образом:

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(TestJunit.class);
		
      for (Failure failure : result.getFailures()) {
         System.out.println(failure.toString());
      }
		
      System.out.println(result.wasSuccessful());
   }
}

Теперь запустите Test Runner, который не будет запускать ни одного теста, определенного в предоставленном классе Test Case.

C:\JUNIT_WORKSPACE>java TestRunner

Проверьте вывод. Ни один контрольный пример не проверен.

true

JUnit — Тест времени

JUnit предоставляет удобную опцию Timeout. Если тестовый случай занимает больше времени, чем указанное количество миллисекунд, JUnit автоматически помечает его как неудачный. Параметр timeout используется вместе с аннотацией @Test. Давайте посмотрим @Test (тайм-аут) в действии.

Создать класс

Создайте Java-класс для тестирования, скажем, MessageUtil.java в C: \> JUNIT_WORKSPACE.

Добавьте бесконечный цикл while внутри метода printMessage ().

/*
* This class prints the given message on console.
*/

public class MessageUtil {

   private String message;

   //Constructor
   //@param message to be printed
   public MessageUtil(String message){
      this.message = message; 
   }

   // prints the message
   public void printMessage(){
      System.out.println(message);
      while(true);
   }   

   // add "Hi!" to the message
   public String salutationMessage(){
      message = "Hi!" + message;
      System.out.println(message);
      return message;
   }   
}  	

Создать тестовый класс

Создайте тестовый класс Java, скажем, TestJunit.java . Добавьте тайм-аут 1000 в testPrintMessage () контрольный пример.

Создайте файл класса Java с именем TestJunit.java в C: \> JUNIT_WORKSPACE.

import org.junit.Test;
import org.junit.Ignore;
import static org.junit.Assert.assertEquals;

public class TestJunit {

   String message = "Robert";	
   MessageUtil messageUtil = new MessageUtil(message);
   
   @Test(timeout = 1000)
   public void testPrintMessage() {	
      System.out.println("Inside testPrintMessage()");     
      messageUtil.printMessage();     
   }

   @Test
   public void testSalutationMessage() {
      System.out.println("Inside testSalutationMessage()");
      message = "Hi!" + "Robert";
      assertEquals(message,messageUtil.salutationMessage());
   }
}

Создать класс Runner Test

Создайте файл класса Java с именем TestRunner.java в C: \> JUNIT_WORKSPACE для выполнения тестовых примеров.

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(TestJunit.class);
		
      for (Failure failure : result.getFailures()) {
         System.out.println(failure.toString());
      }
		
      System.out.println(result.wasSuccessful());
   }
}  	

Скомпилируйте классы MessageUtil, Test case и Test Runner, используя javac.

C:\JUNIT_WORKSPACE>javac MessageUtil.java TestJunit.java TestRunner.java

Теперь запустите Test Runner, который запустит тестовые наборы, определенные в предоставленном классе Test Case.

C:\JUNIT_WORKSPACE>java TestRunner

Проверьте вывод. В тестовом примере testPrintMessage () будет указано, что модульное тестирование не выполнено.

Inside testPrintMessage()
Robert
Inside testSalutationMessage()
Hi!Robert
testPrintMessage(TestJunit): test timed out after 1000 milliseconds
false

JUnit — тест исключений

JUnit предоставляет возможность отслеживания обработки исключений в коде. Вы можете проверить, вызывает ли код желаемое исключение или нет. Ожидаемый параметр используется вместе с аннотацией @Test. Давайте посмотрим @Test (ожидается) в действии.

Создать класс

Создайте Java-класс для тестирования, скажем, MessageUtil.java в C: \> JUNIT_WORKSPACE.

Добавьте условие ошибки в метод printMessage ().

/*
* This class prints the given message on console.
*/

public class MessageUtil {

   private String message;

   //Constructor
   //@param message to be printed
   public MessageUtil(String message){
      this.message = message; 
   }

   // prints the message
   public void printMessage(){
      System.out.println(message);
      int a = 0;
      int b = 1/a;
   }   

   // add "Hi!" to the message
   public String salutationMessage(){
      message = "Hi!" + message;
      System.out.println(message);
      return message;
   }   
}  	

Создать тестовый класс

Создайте тестовый класс Java с именем TestJunit.java . Добавьте ожидаемое исключение ArithmeticException в тестовый пример testPrintMessage ().

Создайте файл класса Java с именем TestJunit.java в C: \> JUNIT_WORKSPACE.

import org.junit.Test;
import org.junit.Ignore;
import static org.junit.Assert.assertEquals;

public class TestJunit {

   String message = "Robert";	
   MessageUtil messageUtil = new MessageUtil(message);
   
   @Test(expected = ArithmeticException.class)
   public void testPrintMessage() {	
      System.out.println("Inside testPrintMessage()");     
      messageUtil.printMessage();     
   }

   @Test
   public void testSalutationMessage() {
      System.out.println("Inside testSalutationMessage()");
      message = "Hi!" + "Robert";
      assertEquals(message,messageUtil.salutationMessage());
   }
}

Создать класс Runner Test

Создайте файл класса Java с именем TestRunner.java в C: \> JUNIT_WORKSPACE для выполнения тестовых примеров.

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(TestJunit.class);
		
      for (Failure failure : result.getFailures()) {
         System.out.println(failure.toString());
      }
		
      System.out.println(result.wasSuccessful());
   }
}  	

Скомпилируйте классы MessageUtil, Test case и Test Runner, используя javac.

C:\JUNIT_WORKSPACE>javac MessageUtil.java TestJunit.java TestRunner.java

Теперь запустите Test Runner, который запустит тестовые наборы, определенные в предоставленном классе Test Case.

C:\JUNIT_WORKSPACE>java TestRunner

Проверьте вывод. testPrintMessage () контрольный пример будет пройден.

Inside testPrintMessage()
Robert
Inside testSalutationMessage()
Hi!Robert
true

JUnit — параметризованный тест

JUnit 4 представил новую функцию под названием параметризованные тесты . Параметризованные тесты позволяют разработчику запускать один и тот же тест снова и снова, используя разные значения. Для создания параметризованного теста необходимо выполнить пять шагов.

  • Аннотируйте тестовый класс с помощью @RunWith (Parameterized.class).

  • Создайте открытый статический метод с аннотацией @Parameters, который возвращает коллекцию объектов (как массив) в качестве набора тестовых данных.

  • Создайте открытый конструктор, который принимает то, что эквивалентно одной «строке» тестовых данных.

  • Создайте переменную экземпляра для каждого «столбца» тестовых данных.

  • Создайте свои тестовые наборы, используя переменные экземпляра в качестве источника тестовых данных.

Аннотируйте тестовый класс с помощью @RunWith (Parameterized.class).

Создайте открытый статический метод с аннотацией @Parameters, который возвращает коллекцию объектов (как массив) в качестве набора тестовых данных.

Создайте открытый конструктор, который принимает то, что эквивалентно одной «строке» тестовых данных.

Создайте переменную экземпляра для каждого «столбца» тестовых данных.

Создайте свои тестовые наборы, используя переменные экземпляра в качестве источника тестовых данных.

Тестовый случай будет вызываться один раз для каждой строки данных. Давайте посмотрим параметризованные тесты в действии.

Создать класс

Создайте класс Java для тестирования, скажем, PrimeNumberChecker.java в C: \> JUNIT_WORKSPACE.

public class PrimeNumberChecker {
   public Boolean validate(final Integer primeNumber) {
      for (int i = 2; i < (primeNumber / 2); i++) {
         if (primeNumber % i == 0) {
            return false;
         }
      }
      return true;
   }
}

Создать параметризованный класс теста

Создайте тестовый класс Java, скажем, PrimeNumberCheckerTest.java . Создайте файл Java-класса с именем PrimeNumberCheckerTest.java в C: \> JUNIT_WORKSPACE.

import java.util.Arrays;
import java.util.Collection;
 
import org.junit.Test;
import org.junit.Before;

import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
import org.junit.runner.RunWith;
import static org.junit.Assert.assertEquals;

@RunWith(Parameterized.class)
public class PrimeNumberCheckerTest {
   private Integer inputNumber;
   private Boolean expectedResult;
   private PrimeNumberChecker primeNumberChecker;

   @Before
   public void initialize() {
      primeNumberChecker = new PrimeNumberChecker();
   }

   // Each parameter should be placed as an argument here
   // Every time runner triggers, it will pass the arguments
   // from parameters we defined in primeNumbers() method
	
   public PrimeNumberCheckerTest(Integer inputNumber, Boolean expectedResult) {
      this.inputNumber = inputNumber;
      this.expectedResult = expectedResult;
   }

   @Parameterized.Parameters
   public static Collection primeNumbers() {
      return Arrays.asList(new Object[][] {
         { 2, true },
         { 6, false },
         { 19, true },
         { 22, false },
         { 23, true }
      });
   }

   // This test will run 4 times since we have 5 parameters defined
   @Test
   public void testPrimeNumberChecker() {
      System.out.println("Parameterized Number is : " + inputNumber);
      assertEquals(expectedResult, 
      primeNumberChecker.validate(inputNumber));
   }
}

Создать класс Runner Test

Создайте файл класса Java с именем TestRunner.java в C: \> JUNIT_WORKSPACE для выполнения тестовых примеров.

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(PrimeNumberCheckerTest.class);

      for (Failure failure : result.getFailures()) {
         System.out.println(failure.toString());
      }
		
      System.out.println(result.wasSuccessful());
   }
}  	

Скомпилируйте классы PrimeNumberChecker, PrimeNumberCheckerTest и Test Runner, используя javac.

C:\JUNIT_WORKSPACE>javac PrimeNumberChecker.java PrimeNumberCheckerTest.java
TestRunner.java

Теперь запустите Test Runner, который запустит тестовые наборы, определенные в предоставленном классе Test Case.

C:\JUNIT_WORKSPACE>java TestRunner

Проверьте вывод.

Parameterized Number is : 2
Parameterized Number is : 6
Parameterized Number is : 19
Parameterized Number is : 22
Parameterized Number is : 23
true

JUnit — подключи с ANT

У нас будет пример, демонстрирующий, как запустить JUnit с помощью ANT. Следуйте инструкциям ниже.

Шаг 1: Загрузите Apache Ant

Загрузите Apache Ant в зависимости от операционной системы, над которой вы работаете.

Операционные системы Название архива
Windows apache-ant-1.8.4-bin.zip
Linux апач-муравей-1.8.4-bin.tar.gz
макинтош апач-муравей-1.8.4-bin.tar.gz

Шаг 2: Установите среду Ant

Установите переменную среды ANT_HOME, чтобы она указывала на местоположение базовой директории, где на вашем компьютере хранятся библиотеки ANT. Предположим, библиотеки Ant хранятся в папке apache-ant-1.8.4.

Sr.No. ОС и описание
1

Windows

Установите переменную среды ANT_HOME в C: \ Program Files \ Apache Software Foundation \ apache-ant-1.8.4

2

Linux

export ANT_HOME = /usr/local/apache-ant-1.8.4

3

макинтош

export ANT_HOME = /Library/apache-ant-1.8.4

Windows

Установите переменную среды ANT_HOME в C: \ Program Files \ Apache Software Foundation \ apache-ant-1.8.4

Linux

export ANT_HOME = /usr/local/apache-ant-1.8.4

макинтош

export ANT_HOME = /Library/apache-ant-1.8.4

Добавьте расположение компилятора Ant в системный путь следующим образом:

Операционные системы Выход
Windows Добавьте строку % ANT_HOME \ bin в конце системной переменной Path .
Linux экспорт PATH = $ PATH: $ ANT_HOME / bin /
макинтош не требуется

Шаг 3: Скачать архив JUnit

Загрузите JUnit Archive, подходящий для вашей операционной системы.

Операционные системы Название архива
Windows junit4.10.jar
Linux junit4.10.jar
макинтош junit4.10.jar

Шаг 4: Создать структуру проекта

  • Создайте папку TestJunitWithAnt в C: \> JUNIT_WORKSPACE.

  • Создайте папку src в C: \> JUNIT_WORKSPACE> TestJunitWithAnt.

  • Создайте тест папки в C: \> JUNIT_WORKSPACE> TestJunitWithAnt.

  • Создайте папку lib в C: \> JUNIT_WORKSPACE> TestJunitWithAnt.

  • Создайте класс MessageUtil в C: \> JUNIT_WORKSPACE> TestJunitWithAnt> srcfolder.

Создайте папку TestJunitWithAnt в C: \> JUNIT_WORKSPACE.

Создайте папку src в C: \> JUNIT_WORKSPACE> TestJunitWithAnt.

Создайте тест папки в C: \> JUNIT_WORKSPACE> TestJunitWithAnt.

Создайте папку lib в C: \> JUNIT_WORKSPACE> TestJunitWithAnt.

Создайте класс MessageUtil в C: \> JUNIT_WORKSPACE> TestJunitWithAnt> srcfolder.

/*
* This class prints the given message on console.
*/

public class MessageUtil {

   private String message;

   //Constructor
   //@param message to be printed
   public MessageUtil(String message){
      this.message = message; 
   }

   // prints the message
   public String printMessage(){
      System.out.println(message);
      return message;
   }   

   // add "Hi!" to the message
   public String salutationMessage(){
      message = "Hi!" + message;
      System.out.println(message);
      return message;
   }   
}  	

Создайте класс TestMessageUtil в папке C: \> JUNIT_WORKSPACE> TestJunitWithAnt> src.

import org.junit.Test;
import org.junit.Ignore;
import static org.junit.Assert.assertEquals;

public class TestMessageUtil {

   String message = "Robert";	
   MessageUtil messageUtil = new MessageUtil(message);
   
   @Test
   public void testPrintMessage() {	
      System.out.println("Inside testPrintMessage()");     
      assertEquals(message,messageUtil.printMessage());
   }

   @Test
   public void testSalutationMessage() {
      System.out.println("Inside testSalutationMessage()");
      message = "Hi!" + "Robert";
      assertEquals(message,messageUtil.salutationMessage());
   }
}

Скопируйте junit-4.10.jar в папку C: \> JUNIT_WORKSPACE> TestJunitWithAnt> lib.

Создать ANT Build.xml

Мы будем использовать задачу <junit> в Ant для выполнения наших тестовых случаев JUnit.

<project name = "JunitTest" default = "test" basedir = ".">
   <property name = "testdir" location = "test" />
   <property name = "srcdir" location = "src" />
   <property name = "full-compile" value = "true" />
	
   <path id = "classpath.base"/>
	
   <path id = "classpath.test">
      <pathelement location = "lib/junit-4.10.jar" />
      <pathelement location = "${testdir}" />
      <pathelement location = "${srcdir}" />
      <path refid = "classpath.base" />
   </path>
	
   <target name = "clean" >
      <delete verbose = "${full-compile}">
         <fileset dir = "${testdir}" includes = "**/*.class" />
      </delete>
   </target>
	
   <target name = "compile" depends = "clean">
      <javac srcdir = "${srcdir}" destdir = "${testdir}" 
         verbose = "${full-compile}">
         <classpath refid = "classpath.test"/>
      </javac>
   </target>
	
   <target name = "test" depends = "compile">
      <junit>
         <classpath refid = "classpath.test" />
         <formatter type = "brief" usefile = "false" />
         <test name = "TestMessageUtil" />
      </junit>
   </target>
	
</project>

Запустите следующую команду Ant.

C:\JUNIT_WORKSPACE\TestJunitWithAnt>ant

Проверьте вывод.

Buildfile: C:\JUNIT_WORKSPACE\TestJunitWithAnt\build.xml

clean:  

compile:  
   [javac] Compiling 2 source files to C:\JUNIT_WORKSPACE\TestJunitWithAnt\test
   [javac] [parsing started C:\JUNIT_WORKSPACE\TestJunitWithAnt\src\
      MessageUtil.java]
   [javac] [parsing completed 18ms]
   [javac] [parsing started C:\JUNIT_WORKSPACE\TestJunitWithAnt\src\
      TestMessageUtil.java]
   [javac] [parsing completed 2ms]
   [javac]     
   [javac] [loading java\lang\Object.class(java\lang:Object.class)]
   [javac] [loading java\lang\String.class(java\lang:String.class)]
   [javac] [loading org\junit\Test.class(org\junit:Test.class)]
   [javac] [loading org\junit\Ignore.class(org\junit:Ignore.class)]
   [javac] [loading org\junit\Assert.class(org\junit:Assert.class)]
   [javac] [loading java\lang\annotation\Retention.class
      (java\lang\annotation:Retention.class)]
   [javac] [loading java\lang\annotation\RetentionPolicy.class
      (java\lang\annotation:RetentionPolicy.class)]
   [javac] [loading java\lang\annotation\Target.class
      (java\lang\annotation:Target.class)]
   [javac] [loading java\lang\annotation\ElementType.class
      (java\lang\annotation:ElementType.class)]
   [javac] [loading java\lang\annotation\Annotation.class
      (java\lang\annotation:Annotation.class)]
   [javac] [checking MessageUtil]
   [javac] [loading java\lang\System.class(java\lang:System.class)]
   [javac] [loading java\io\PrintStream.class(java\io:PrintStream.class)]
   [javac] [loading java\io\FilterOutputStream.class
      (java\io:FilterOutputStream.class)]
   [javac] [loading java\io\OutputStream.class(java\io:OutputStream.class)]
   [javac] [loading java\lang\StringBuilder.class
      (java\lang:StringBuilder.class)]
   [javac] [loading java\lang\AbstractStringBuilder.class
      (java\lang:AbstractStringBuilder.class)]
   [javac] [loading java\lang\CharSequence.class(java\lang:CharSequence.class)]
   [javac] [loading java\io\Serializable.class(java\io:Serializable.class)]
   [javac] [loading java\lang\Comparable.class(java\lang:Comparable.class)]
   [javac] [loading java\lang\StringBuffer.class(java\lang:StringBuffer.class)]
   [javac] [wrote C:\JUNIT_WORKSPACE\TestJunitWithAnt\test\MessageUtil.class]
   [javac] [checking TestMessageUtil]
   [javac] [wrote C:\JUNIT_WORKSPACE\TestJunitWithAnt\test\TestMessageUtil.class]
   [javac] [total 281ms]

test:
    [junit] Testsuite: TestMessageUtil
    [junit] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 0.008 sec
    [junit]
    [junit] ------------- Standard Output ---------------
    [junit] Inside testPrintMessage()
    [junit] Robert
    [junit] Inside testSalutationMessage()
    [junit] Hi!Robert
    [junit] ------------- ---------------- ---------------

BUILD SUCCESSFUL
Total time: 0 seconds

JUnit — подключи с Eclipse

Чтобы настроить JUnit с помощью eclipse, выполните следующие действия.

Шаг 1: Загрузите JUnit Archive

Загрузите JUnit jar на основе операционной системы, установленной в вашей системе.

Операционные системы Название архива
Windows junit4.10.jar
Linux junit4.10.jar
макинтош junit4.10.jar

Предположим, вы скопировали указанный выше JAR-файл в папку C: \> JUnit.

Шаг 2: Установите среду Eclipse

Откройте eclipse → щелкните правой кнопкой мыши проект и выберите свойство> Build Path> Configure Build Path и добавьте junit-4.10.jar в библиотеки с помощью кнопки Add External Jar.

Добавьте junit-4.10.jar в библиотеки.

Мы предполагаем, что ваш Eclipse имеет встроенный плагин JUnit. Если он недоступен в каталоге C: \> eclipse \ plugins, вы можете скачать его из плагина JUnit . Разархивируйте загруженный zip-файл в папку плагинов Eclipse. Наконец перезапустите Eclipse.

Теперь ваш Eclipse готов к разработке тестовых случаев JUnit.

Шаг 3: Проверьте установку JUnit в Eclipse

Создайте проект TestJunit в Eclipse в любом месте. Затем создайте класс MessageUtil для тестирования в проекте.

   
/*
* This class prints the given message on console.
*/

public class MessageUtil {

   private String message;

   //Constructor
   //@param message to be printed
   public MessageUtil(String message){
      this.message = message;
   }
      
   // prints the message
   public String printMessage(){
      System.out.println(message);
      return message;
   }   
} 

Создайте тестовый класс TestJunit в проекте.

   
import org.junit.Test;
import static org.junit.Assert.assertEquals;

public class TestJunit {
	
   String message = "Hello World";	
   MessageUtil messageUtil = new MessageUtil(message);

   @Test
   public void testPrintMessage() {	  
      assertEquals(message,messageUtil.printMessage());
   }
}

Ниже должна быть структура проекта —

Структура проекта

Наконец, щелкните правой кнопкой мыши программу и запустите ее как JUnit, чтобы проверить вывод программы.

Run Junit

Проверьте результат.

Юнит результат успеха.

JUnit — Расширения

Ниже приведены расширения JUnit —

  • Кактус
  • JWebUnit
  • XMLUnit
  • MockObject

Кактус

Cactus — это простая тестовая среда для модульного тестирования Java-кода на стороне сервера (сервлеты, EJB, библиотеки тегов, фильтры). Цель Cactus — снизить стоимость написания тестов для серверного кода. Он использует JUnit и расширяет его. Cactus реализует стратегию в контейнере, которая выполняет тесты внутри контейнера.

Экосистема кактуса состоит из нескольких компонентов —

  • Cactus Framework — это сердце Кактуса. Это движок, который предоставляет API для написания тестов Cactus.

  • Интеграционные модули Cactus — это внешние интерфейсы и платформы, которые предоставляют простые способы использования Cactus Framework (скрипты Ant, плагин Eclipse и плагин Maven).

Cactus Framework — это сердце Кактуса. Это движок, который предоставляет API для написания тестов Cactus.

Интеграционные модули Cactus — это внешние интерфейсы и платформы, которые предоставляют простые способы использования Cactus Framework (скрипты Ant, плагин Eclipse и плагин Maven).

Следующий код демонстрирует, как можно использовать Cactus.

import org.apache.cactus.*;
import junit.framework.*;

public class TestSampleServlet extends ServletTestCase {
   @Test
   public void testServlet() {
      // Initialize class to test
      SampleServlet servlet = new SampleServlet();

      // Set a variable in session as the doSomething()
      // method that we are testing 
      session.setAttribute("name", "value");

      // Call the method to test, passing an 
      // HttpServletRequest object (for example)
      String result = servlet.doSomething(request);

      // Perform verification that test was successful
      assertEquals("something", result);
      assertEquals("otherValue", session.getAttribute("otherName"));
   }
}

JWebUnit

JWebUnit — это основанная на Java среда тестирования веб-приложений. Он объединяет существующие платформы тестирования, такие как HtmlUnit и Selenium, с унифицированным простым интерфейсом тестирования для проверки правильности ваших веб-приложений.

JWebUnit предоставляет высокоуровневый Java API для навигации по веб-приложению в сочетании с набором утверждений для проверки правильности приложения. Сюда входит навигация по ссылкам, ввод и отправка форм, проверка содержимого таблицы и другие типичные функции веб-приложений для бизнеса.

Простые методы навигации и готовые к использованию утверждения позволяют быстрее создавать тесты, чем при использовании только JUnit или HtmlUnit. И если вы хотите переключиться с HtmlUnit на другие плагины, такие как Selenium (скоро будет доступно), вам не нужно переписывать свои тесты.

Вот пример кода.

import junit.framework.TestCase;
import net.sourceforge.jwebunit.WebTester;

public class ExampleWebTestCase extends TestCase {
   private WebTester tester;
   
   public ExampleWebTestCase(String name) {
      super(name);
      tester = new WebTester();
   }
	
   //set base url
   public void setUp() throws Exception {
      getTestContext().setBaseUrl("http://myserver:8080/myapp");
   }
	
   // test base info
   @Test
   public void testInfoPage() {
      beginAt("/info.html");
   }
}

XMLUnit

XMLUnit предоставляет один класс расширения JUnit, XMLTestCase, и набор вспомогательных классов, которые позволяют делать утверждения относительно:

  • Различия между двумя частями XML (через классы Diff и DetailDiff).

  • Допустимость фрагмента XML (через класс Validator).

  • Результат преобразования фрагмента XML с использованием XSLT (через класс Transform).

  • Оценка выражения XPath на фрагменте XML (через классы, реализующие интерфейс XpathEngine).

  • Отдельные узлы в фрагменте XML, предоставляемые DOM Traversal (через класс NodeTest).

Различия между двумя частями XML (через классы Diff и DetailDiff).

Допустимость фрагмента XML (через класс Validator).

Результат преобразования фрагмента XML с использованием XSLT (через класс Transform).

Оценка выражения XPath на фрагменте XML (через классы, реализующие интерфейс XpathEngine).

Отдельные узлы в фрагменте XML, предоставляемые DOM Traversal (через класс NodeTest).

Допустим, у нас есть два фрагмента XML, которые мы хотим сравнить, и утверждаем, что они равны. Мы могли бы написать простой тестовый класс, как этот —

import org.custommonkey.xmlunit.XMLTestCase;

public class MyXMLTestCase extends XMLTestCase {

   // this test method compare two pieces of the XML
   @Test
   public void testForXMLEquality() throws Exception {
      String myControlXML = "<msg><uuid>0x00435A8C</uuid></msg>";
      String myTestXML = "<msg><localId>2376</localId></msg>";
      assertXMLEqual("Comparing test xml to control xml", myControlXML, myTestXML);
   }
}

MockObject

В модульном тесте фиктивные объекты могут имитировать поведение сложных, реальных (не фиктивных) объектов и поэтому полезны, когда реальный объект нецелесообразно или невозможно включить в модульный тест.

Общий стиль кодирования для тестирования с фиктивными объектами заключается в:

  • Создайте экземпляры фиктивных объектов.
  • Установите состояние и ожидания в макете объектов.
  • Вызвать код домена с фиктивными объектами в качестве параметров.
  • Проверьте согласованность в макете объектов.

Ниже приведен пример MockObject с использованием Jmock.