O JUnit é uma biblioteca Java para escrever testes ao código.

O Maven já vem preparado para executar testes unitários,
na fase test do ciclo de vida,
mas é necessário adicionar a dependência para a biblioteca JUnit:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
As classes de testes são aquelas cujo nome, por omissão, termina com Test. Devem ser arrumadas na pasta src/test/java do projeto.
Uma classe de testes tem a seguinte estrutura:
package example.test;
import org.junit.*;
import static org.junit.Assert.*;
/** Test suite */
public class ExampleTest {
// static members
// one-time initialization and clean-up
@BeforeClass
public static void oneTimeSetUp() {
// runs once before all tests in the suite
}
@AfterClass
public static void oneTimeTearDown() {
// runs once after all tests in the suite
}
// members
// initialization and clean-up for each test
@Before
public void setUp() {
// runs before each test
}
@After
public void tearDown() {
// runs after each test
}
// tests
@Test
public void test() {
// do something ...
// assertEquals(expected, actual);
// if the assert fails, the test fails
}
}
No JUnit 4 são utilizadas anotações para definir qual o papel dos métodos.
As funções de assert permitem verificar o resultado esperado de um teste:
O plug-in de Maven que corre os testes chama-se
Surefire.
Os exemplos seguintes mostram como correr os testes e
como controlar quais os testes a executar.
// to compile and execute all tests $ mvn test // to execute only a specific test class $ mvn test -Dtest=PingIT // to execute only a specific test $ mvn test -Dtest=PingIT#testPing // you can also use wildcards (the example below will match classes starting with P) $ mvn test -Dtest=P* // to skip integration tests $ mvn package -Dtest.skip=truePara mais informação sobre JUnit, consultar:
Para implementar testes de exceções existem duas abordagens: com expected na anotação @Test ou não.
...
@Test(expected=ExampleException.class)
public void testExceptionWithAnnotation() throws Exception {
// ... code that must throw an exception
// JUnit expects the exception declared in the annotation
// if it is not thrown, the test fails
}
...
@Test
public void testExceptionWithoutAnnotation() throws Exception {
try {
// ... code that must throw an exception
fail();
} catch (Exception e) {
// check message of expected exception, etc
}
}
...
© Docentes de Sistemas Distribuídos,
Dep. Eng. Informática,
Técnico Lisboa