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!