FC

Filipe Cardoso24/07/2024 18:05
Compartilhe

Testes Unitários em Java com JUnit e Maven

  • #RESTful
  • #REST
  • #Java

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
Compartilhe
Comentários (0)