Esse artigo que foi escrito por Abdullah Çetin ÇAVDAR em inglês, apresenta de forma simples e rápida como utilizar a nova API do JUnit. Veja também o artigo original.
Brinquei um pouco com JUnit 4 esse final final de semana, e aqui vai uma pequena introdução:
@Test
Anote seus testes com @Test. Você não precisa mais usar o prefixo test nos métodos de testes, e além disso, sua classe também não precisa mais extender TestCase.
@Test
public void addition() {
assertEquals(12, simpleMath.add(7, 5));
}
@Test
public void subtraction() {
assertEquals(9, simpleMath.substract(12, 3));
}
@Before e @After
Utilize as anottations @Before e @After para para “setup” e “tearDown” respectivamente. Eles serão executados antes e depois de cada um dos seus casos de testes.
@Before
public void runBeforeEveryTest() {
simpleMath = new SimpleMath();
}
@After
public void runAfterEveryTest() {
simpleMath = null;
}
Utilize as annotations @BeforeClass e @AfterClass para “setup” e “tearDown” a nível de classe. Pense neles como “setup” e “teardown” que são executados apenas uma vez. Eles são executados antes e depois dos testes.
@BeforeClass
public static void runBeforeClass() {
// executado uma vez antes de todos os testes serem executados
}
@AfterClass
public static void runAfterClass() {
// executado uma vez depois de todos os testes serem executados
}
Tratamento de Exceptions
Utilize o parâmetro “expected” da annotation @Test para casos de uso que esperam exceptions. Escreva o nome da classe da Exception que deverá ser lançada.
@Test(expected = ArithmeticException.class)
public void divisionWithException() {
// divisao por zero
simpleMath.divide(1, 0);
}
@Ignore
Use a annotation @Ignore para testes que você queira ignorar. Você pode adicionar um parâmetro String que defina o motivo pelo qual você está ignorando o teste.
@Ignore("Não está pronto para ser executado")
@Test
public void multiplication() {
assertEquals(15, simpleMath.multiply(3, 5));
}
Timeout
O parâmetro “timeout” define o tempo máximo em milisegundos. O teste falha caso o período seja excedido.
@Test(timeout = 1000)
public void infinity() {
while (true);
}
New Assertions
Compare arrays com os novos métodos de asserção. Dois arrays são iguais quando tem o mesmo tamanho e cada elemento é igual ao correspondente no outro array.
//public static void assertEquals(Object[] expected, Object[] actual);
//public static void assertEquals(String message, Object[] expected, Object[] actual);
@Test
public void listEquality() {
List expected = new ArrayList();
expected.add(5);
List actual = new ArrayList();
actual.add(5);
assertEquals(expected, actual);
}
JUnit4Adapter
Rode os testes do JUnit 4 no JUnit 3 com o Junit4Adapter.
public static junit.framework.Test suite() {
return new JUnit4TestAdapter(SimpleMathTest.class);
}
Boa Codificação!
Parece que ficou bem simples implementar nossos métodos de testes, somente com as anottations.
Muito legal André.
Abraço.