JUnit - Estrutura de Teste
JUnit é um Regression Testing Frameworkusado por desenvolvedores para implementar testes de unidade em Java e acelerar a velocidade de programação e aumentar a qualidade do código. O JUnit Framework pode ser facilmente integrado com qualquer um dos seguintes -
- Eclipse
- Ant
- Maven
Recursos do JUnit Test Framework
A estrutura de teste JUnit fornece os seguintes recursos importantes -
- Fixtures
- Suítes de teste
- Corredores de teste
- Classes JUnit
Luminárias
Fixturesé um estado fixo de um conjunto de objetos usados como linha de base para a execução de testes. O propósito de um dispositivo de teste é garantir que haja um ambiente bem conhecido e fixo no qual os testes são executados para que os resultados sejam repetidos. Inclui -
- método setUp (), que é executado antes de cada invocação de teste.
- método tearDown (), que é executado após cada método de teste.
Vamos verificar um exemplo -
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);
}
}
Suites de teste
Um conjunto de testes agrupa alguns casos de teste de unidade e os executa juntos. No JUnit, as anotações @RunWith e @Suite são usadas para executar o teste do conjunto. Abaixo está um exemplo que usa as classes de teste TestJunit1 e 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());
}
}
Executores de teste
O executor de teste é usado para executar os casos de teste. Aqui está um exemplo que assume a classe de testeTestJunit já existe.
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());
}
}
Classes JUnit
As classes JUnit são classes importantes, usadas para escrever e testar JUnits. Algumas das classes importantes são -
Assert - Contém um conjunto de métodos de declaração.
TestCase - Contém um caso de teste que define o dispositivo para executar vários testes.
TestResult - Contém métodos para coletar os resultados da execução de um caso de teste.