Testes Unitários em Java com JUnit e Maven
Desenvolver e executar testes unitários é uma prática importante na garantia da qualidade e confiabilidade do código. Neste artigo, apresento como criar um projeto Java, configurar testes unitários com JUnit e Maven, e explorar diferentes tipos de testes disponíveis no JUnit, usando o Visual Studio Code (VSCode).
Criando um Projeto Java com Maven
Maven é uma ferramenta de automação de build que facilita o gerenciamento de dependências e a execução de tarefas repetitivas.
Abra o terminal e execute o seguinte comando:
mvn archetype:generate -DgroupId=com.example -DartifactId=meu-projeto -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
Este comando cria um novo projeto Maven com a estrutura básica de diretórios e um exemplo de classe Java.
Estrutura do Projeto
A estrutura do projeto deve seguir dessa maneira:
meu-projeto
│ pom.xml
└───src
└───main
│ └───java
│ └───com
│ └───example
│ │ App.java
└───test
└───java
└───com
└───example
│ AppTest.java
Configurando a dependência do JUnit n pom.xml
adicione a dependência do JUnit no arquivo pom.xml:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
</dependencies>
Criando a classe a ser testada
Crie a classe "Calculadora.java" em src/main/java/com/example/
package com.example;
public class Calculadora {
public int soma(int a, int b) {
return a + b;
}
}
Criando a Classe de Teste
Crie a classe "CalculadoraTest.java" em src/test/java/com/example/
package com.example;
import static org.junit.Assert.*;
import org.junit.*;
public class CalculadoraTest {
@BeforeClass
public static void beforeAll() {
System.out.println("Executado uma vez antes de todos os testes.");
}
@AfterClass
public static void afterAll() {
System.out.println("Executado uma vez depois de todos os testes.");
}
@Before
public void beforeEach() {
System.out.println("Executado antes de cada teste.");
}
@After
public void afterEach() {
System.out.println("Executado depois de cada teste.");
}
@Test
public void testSoma() {
Calculadora calc = new Calculadora();
int resultado = calc.soma(2, 3);
assertEquals(5, resultado); // Deve passar
}
@Test
public void testSomaDiferente() {
Calculadora calc = new Calculadora();
int resultado = calc.soma(2, 3);
assertNotEquals(6, resultado); // Deve passar
}
@Test
public void testArrayEquals() {
int[] esperado = {1, 2, 3};
int[] real = {1, 2, 3};
assertArrayEquals(esperado, real); // Deve passar
}
}
Tipos de Testes no JUnit
- @BeforeClass: Método anotado com @BeforeClass é executado uma vez antes de todos os testes da classe. Deve ser estático.
- @AfterClass: Método anotado com @AfterClass é executado uma vez depois de todos os testes da classe. Deve ser estático.
- @Before: Método anotado com @Before é executado antes de cada método de teste.
- @After: Método anotado com @After é executado depois de cada método de teste.
- assertEquals: Verifica se dois valores são iguais.
- assertNotEquals: Verifica se dois valores são diferentes.
- assertArrayEquals: Verifica se dois arrays são iguais.
Executando os Testes
mvn test
Caso os testes não sejam executados, exclua a pasta "test-classe" presente na pasta "target" e execute os testes novamente. Seguindo estes passos, você consegue configurar e executar testes unitários em Java usando JUnit e Maven no VSCode. Esta prática não só melhora a qualidade do código, mas também facilita a manutenção e a detecção precoce de bugs.
Referências:
- https://cursos.alura.com.br/forum/topico-nao-consigo-executar-os-testes-336918
- https://www.youtube.com/watch?v=nHn4jx5rcLk
Links Úteis:
- https://br.linkedin.com/in/filipe-mesel-lobo-costa-cardoso
- https://github.com/FilipeMesel