Introdução ao JUnit

Introdução a Testes em Java

Maria Milusheva

Senior Software Engineer

Fatos rápidos

  • JUnit é a biblioteca de testes Java mais popular
  • É bem mantida e atualizada constantemente

Uma imagem do logo do JUnit 5.

Introdução a Testes em Java

Escrevendo um teste JUnit

Vamos escrever um teste para o método addTwoNumbers():

public int addTwoNumbers(int a, int b) {
    return a + b;
}
Introdução a Testes em Java

Anotação @Test do JUnit

  • Instale o JUnit usando uma IDE ou ferramentas de build (exemplo na citação)

  • Todo teste deve ter a anotação @Test:

import org.junit.jupiter.api.Test;

@Test 
// O método de teste ficará aqui

Annotation - metadado especial que indica como o método deve ser tratado por compiladores e frameworks. Anotações começam com @

1 https://www.jetbrains.com/help/idea/junit.html
Introdução a Testes em Java

Estrutura de um teste JUnit

import org.junit.jupiter.api.Test;

@Test 

void testAddTwoNumbers() {
// Arrange - Given int num1 = 2; int num2 = 2;
// Act - When int actual = addTwoNumbers(num1, num2);
// Assert - Then assertEquals(4, actual); }
Introdução a Testes em Java

Instruções assert

  • Maneira rápida de comparar resultados atuais com esperados
  • Se esperado e atual não batem, o teste falha
  • Ajuda a detectar bugs e erros rapidamente

Gráfico representando uma instrução assert

Introdução a Testes em Java

Resultados do teste

Considere a asserção:

assertEquals(4, actual); // Vai passar se actual == 4

Se passar, exibirá a mensagem Test passed

Se os valores não forem iguais, por ex., actual = 5:

org.opentest4j.AssertionFailedError: expected: <4> but was: <5>

Lembre-se da ordem dos argumentos! No JUnit, o primeiro é o esperado.

Introdução a Testes em Java

Teste adicional para overflow

@Test 

void testAddTwoNumbers() { // Given int num1 = 2147483647; int num2 = 1; // When int actual = addTwoNumbers(num1, num2); // Then assertEquals(-2147483648, actual); }
Introdução a Testes em Java

Observações sobre JUnit e testes

  • Pode haver múltiplas asserções por teste
  • Todas precisam passar para o teste ser aprovado
  • Podemos importar todas as asserções usando:
import org.junit.jupiter.api.Assertions.*;
Introdução a Testes em Java

Mais observações

  • A seguir há uma ferramenta customizada da DataCamp, não necessária na IDE:
import static com.datacamp.util.testing.CustomJUnitTestLauncher.launchTestsAndPrint;
  • import static package.Class.method permite usar method apenas como method, sem escrever package.Class.method
import static java.lang.Math.max;

...

max(3,5); // Em vez de Math.max(3, 5)
Introdução a Testes em Java

Vamos praticar!

Introdução a Testes em Java

Preparing Video For Download...