Testes em Java: frameworks e ferramentas para o desenvolvedor

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 profissional em Java. Sem testes automatizados, é difícil manter grandes projetos, implementar novas funcionalidades e evitar erros de regressão. Neste artigo, abordaremos as principais ferramentas e frameworks para testar aplicações Java: desde testes unitários até verificações de integração e automação de UI.



Por que é importante testar código Java?

Os testes permitem:

  • Detectar erros nas fases iniciais do desenvolvimento.
  • Simplificar a refatoração — você vê imediatamente o que quebrou.
  • Documentar o comportamento do código.
  • Automatizar a verificação de regressões a cada commit.


JUnit 5 — a base dos testes unitários

JUnit 5 é o padrão de facto para testes unitários em Java. Ele consiste em três módulos: JUnit Platform, JUnit Jupiter e JUnit Vintage. O Jupiter fornece um novo modelo de programação com anotações e extensões.



Exemplo básico de teste 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(); assertEquals(5, calc.add(2, 3), "2 + 3 deve ser 5"); }}


Mockito — criação de stubs e mocks

Ao testar, muitas vezes é necessário isolar uma classe de suas dependências (banco de dados, APIs externas). O Mockito permite criar objetos mock e definir seu comportamento.



Exemplo de uso do Mockito com JUnit 5:

import org.junit.jupiter.api.Test;import org.junit.jupiter.api.extension.ExtendWith;import org.mockito.InjectMocks;import org.mockito.Mock;import org.mockito.junit.jupiter.MockitoExtension;import static org.mockito.Mockito.*;

@ExtendWith(MockitoExtension.class)class UserServiceTest { @Mock private UserRepository repository;

@InjectMocks private UserService service;

@Test void testFindUser() { when(repository.findById(1L)).thenReturn(new User("Alice")); User result = service.findUser(1L); assertEquals("Alice", result.getName()); verify(repository).findById(1L); }}


TestNG — alternativa ao JUnit com recursos avançados

TestNG (Test Next Generation) é um framework inspirado no JUnit, mas que adiciona suporte a grupos de testes, parametrização, dependências e execução paralela. Ele é especialmente popular em grandes projetos e em testes de integração.



Exemplo de teste parametrizado no TestNG:

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

public class ParamTest { @DataProvider(name = "numbers") public Object[][] data() { return new Object[][] { {1, 2, 3}, {0, 0, 0}, {-1, 1, 0} }; }

@Test(dataProvider = "numbers") public void testAdd(int a, int b, int expected) { assertEquals(a + b, expected); }}


Selenium — automação de interfaces web

Para testar aplicações web Java (por exemplo, em Spring Boot), frequentemente se utiliza o Selenium WebDriver. Ele permite emular ações do usuário no navegador: cliques, inserção de texto, verificação de elementos.



Exemplo mínimo de teste com Selenium:

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;import org.junit.jupiter.api.Test;

public class LoginTest { @Test public void testLoginPage() { WebDriver driver = new ChromeDriver(); driver.get("https://example.com/login"); driver.findElement(By.id("username")).sendKeys("admin"); driver.findElement(By.id("password")).sendKeys("pa

Recommendations