Testes em Java: frameworks e ferramentas (JUnit, TestNG, Mockito)

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Testes em Java: visão geral de frameworks e ferramentas



Testes de qualidade são uma parte essencial do desenvolvimento em Java. Os frameworks modernos permitem automatizar a verificação de código, detectar erros nas fases iniciais e garantir a estabilidade da aplicação. Neste artigo, abordaremos as principais ferramentas para testes unitários, mocking e testes de integração em Java, além de apresentar exemplos práticos de sua utilização.



1. JUnit 5 — padrão de testes unitários



JUnit 5 (Jupiter) é o framework mais popular para testes modulares em Java. Ele fornece anotações para definir métodos de teste, gerenciar o ciclo de vida e parametrização.



Principais anotações do JUnit 5:

  • @Test — marca um método de teste
  • @BeforeEach / @AfterEach — executados antes/depois de cada teste
  • @BeforeAll / @AfterAll — executados uma vez para toda a classe
  • @ParameterizedTest — para testes com diferentes dados de entrada


Exemplo de teste simples:

import org.junit.jupiter.api.Test;import static org.junit.jupiter.api.Assertions.*;

public class CalculatorTest {

@Test void testAddition() { Calculator calc = new Calculator(); assertEquals(5, calc.add(2, 3)); }

@Test void testDivisionByZero() { Calculator calc = new Calculator(); assertThrows(ArithmeticException.class, () -> calc.divide(10, 0)); }}


2. TestNG — alternativa com recursos avançados



TestNG (Test Next Generation) é outro framework poderoso, inspirado no JUnit, mas que oferece funcionalidades adicionais: agrupamento de testes, testes dependentes, execução paralela e configurações flexíveis via XML.



Características distintivas do TestNG:

  • @Test(groups = {"smoke"}) — agrupamento de testes
  • @DataProvider — fornecimento de dados para os testes
  • @Test(dependsOnMethods = {"methodA"}) — dependências entre testes


Exemplo com DataProvider:

import org.testng.annotations.DataProvider;import org.testng.annotations.Test;import static org.testng.Assert.assertEquals;

public class DataDrivenTest {

@DataProvider(name = "testData") public Object[][] createData() { return new Object[][] { { 1, 2, 3 }, { 5, -3, 2 }, { 0, 0, 0 } }; }

@Test(dataProvider = "testData") public void testAdd(int a, int b, int expected) { Calculator calc = new Calculator(); assertEquals(calc.add(a, b), expected); }}


3. Mockito — criação de stubs (mocks)



Mockito é uma biblioteca para criar objetos mock em Java. Ela permite isolar o componente testado de suas dependências (banco de dados, serviços externos) e verificar a interação entre objetos.



Principais recursos do Mockito:

  • mock() — criação de um objeto mock
  • when().thenReturn() — definição de comportamento
  • verify() — verificação de chamadas de métodos
  • @Mock e @InjectMocks — injeção automática de mocks


Exemplo de uso do Mockito:

import static org.mockito.Mockito.*;import org.junit.jupiter.api.Test;

public class UserServiceTest {

@Test void testGetUser() { // Criamos um mock para o repositório UserRepository mockRepo = mock(UserRepository.class); when(mockRepo.findById(1L)).thenReturn(new User("Alice"));

UserService service = new UserService(mockRepo); User user = service.getUser(1L);

assertEquals("Alice", user.getName()); verify(mock

Recommendations