Учебники

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

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