Testes em Java: principais frameworks e ferramentas

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 dos principais frameworks e ferramentas



Testes são uma parte essencial do desenvolvimento profissional em Java. Sem testes de qualidade, é impossível garantir a estabilidade do código, sua segurança e conformidade com os requisitos. Neste artigo, vamos explorar detalhadamente as principais ferramentas e frameworks para testar aplicações Java, que ajudarão você a escrever código confiável e de fácil manutenção.



1. JUnit 5 — a base dos testes unitários



JUnit 5 (Jupiter) é o padrão de facto para testes unitários em Java. Ele fornece anotações, asserts e mecanismos para organizar testes.



Principais funcionalidades:

  • Anotações @Test, @BeforeEach, @AfterAll para gerenciar o ciclo de vida dos testes
  • Testes parametrizados com @ParameterizedTest
  • Testes aninhados (@Nested) para agrupamento lógico
  • Extensões (Extensions) através de @ExtendWith


Exemplo de um teste simples com JUnit 5:



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

class CalculatorTest {

@Test void testAddition() { Calculator calc = new Calculator(); int result = calc.add(2, 3); assertEquals(5, result, "2 + 3 deve ser igual a 5"); }

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


2. Mockito — criação de stubs e mocks



Mockito é o framework mais popular para criar objetos mock em Java. Ele permite isolar a classe sob teste de suas dependências.



Principais funcionalidades do Mockito:

  • Criação de mocks através de Mockito.mock()
  • Configuração de comportamento com when()...thenReturn()
  • Verificação de chamadas de métodos (verify())
  • Captura de argumentos através de ArgumentCaptor


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

class UserServiceTest {

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

// Injetando o mock no serviço UserService service = new UserService(mockRepo);

// Executando o teste User user = service.getUser(1L); assertEquals("Alice", user.getName());

// Verificando se o método foi chamado verify(mockRepo).findById(1L); }}


3. TestNG — alternativa ao JUnit com funcionalidades avançadas



TestNG é um framework poderoso, inspirado no JUnit e NUnit. Ele oferece recursos adicionais: dependências de testes, execução paralela, grupos de testes.



Características distintivas do TestNG:

  • Anotações @Test, @BeforeSuite, @AfterClass
  • Agrupamento de testes através do atributo groups
  • Parametrização através de configuração XML
  • Dependências entre testes (dependsOnMethods)


import org.testng.annotations.Test;import static org.testng.Assert.*;

public class MathTest {

@Test(groups = {"smoke", "math"}) public void testSum() { assertEquals(5, Math.addExact(2, 3)); }

@Test(dependsOnMethods = {"testSum"}) public void testMultiply() { assertEquals(6, Math.multiplyExact(2, 3)); }}


4. Selenium WebDriver — testes de interfaces web



Selenium é uma ferramenta indispensável para testes automatizados de aplicações web. Ele suporta todos os

Recommendations