JUnit - teste parametrizado
JUnit 4 introduziu um novo recurso chamado parameterized tests. Os testes parametrizados permitem que um desenvolvedor execute o mesmo teste repetidamente usando valores diferentes. Existem cinco etapas que você precisa seguir para criar um teste parametrizado.
Anote a classe de teste com @RunWith (Parameterized.class).
Crie um método estático público anotado com @Parameters que retorna uma coleção de objetos (como matriz) como conjunto de dados de teste.
Crie um construtor público que obtenha o que é equivalente a uma "linha" de dados de teste.
Crie uma variável de instância para cada "coluna" de dados de teste.
Crie seu (s) caso (s) de teste usando as variáveis de instância como a fonte dos dados de teste.
O caso de teste será chamado uma vez para cada linha de dados. Vamos ver os testes parametrizados em ação.
Criar uma aula
Crie uma classe java a ser testada, digamos, PrimeNumberChecker.java em 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;
}
}
Criar classe de caso de teste parametrizado
Crie uma classe de teste java, digamos, PrimeNumberCheckerTest.java. Crie um arquivo de classe java chamadoPrimeNumberCheckerTest.java em 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));
}
}
Criar classe de executor de teste
Crie um arquivo de classe java chamado TestRunner.java em C: \> JUNIT_WORKSPACE para executar caso (s) de teste.
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());
}
}
Compile as classes PrimeNumberChecker, PrimeNumberCheckerTest e Test Runner usando javac.
C:\JUNIT_WORKSPACE>javac PrimeNumberChecker.java PrimeNumberCheckerTest.java
TestRunner.java
Agora execute o Test Runner, que executará os casos de teste definidos na classe Test Case fornecida.
C:\JUNIT_WORKSPACE>java TestRunner
Verifique a saída.
Parameterized Number is : 2
Parameterized Number is : 6
Parameterized Number is : 19
Parameterized Number is : 22
Parameterized Number is : 23
true