AssertJ para Java: guia completo com exemplos práticos

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

AssertJ para Java: Guia Completo de Fluent Assertions

1. O que é e por que usar

AssertJ é uma biblioteca poderosa de fluent assertions (asserções encadeadas) para a linguagem Java, projetada para escrever testes mais legíveis, expressivos e autodocumentados. Diferente do JUnit ou TestNG padrão, que oferecem apenas métodos básicos como assertEquals(a, b), o AssertJ fornece uma API rica com encadeamento de chamadas, tornando o código dos testes semelhante à linguagem natural. Por exemplo, em vez de assertTrue(list.contains("foo")), você escreve assertThat(list).contains("foo").

Por que usar? Primeiro, o AssertJ melhora significativamente a legibilidade dos testes. Quando um desenvolvedor vê assertThat(result).isNotNull().hasSize(5).contains("esperado"), ele entende imediatamente o que está sendo verificado: o resultado não é nulo, o tamanho é 5 e contém a string "esperado". Segundo, o AssertJ fornece mensagens de erro detalhadas. Em vez do chato "esperado true mas foi false", você recebe "Esperava que a lista contivesse 'foo' mas não foi encontrado em [bar, baz]". Terceiro, a biblioteca suporta diversos tipos de dados: coleções, strings, números, datas, arquivos, exceções e até objetos personalizados.

O AssertJ é especialmente útil em projetos onde a manutenção dos testes é importante. Graças à API fluente, os testes se tornam menos frágeis durante refatorações, pois as cadeias de métodos são fáceis de modificar. A biblioteca é ativamente desenvolvida, possui excelente documentação e é amplamente utilizada na indústria (Spring, Hibernate, Netflix, entre outros).

2. Instalação

O AssertJ é distribuído através do Maven Central. Para usar no seu projeto, adicione a dependência no seu pom.xml (Maven) ou build.gradle (Gradle).

Maven

<dependency>
    <groupId>org.assertj</groupId>
    <artifactId>assertj-core</artifactId>
    <version>3.25.3</version> <!-- Verifique a versão mais recente no Maven Central -->
    <scope>test</scope>
</dependency>

Gradle

testImplementation 'org.assertj:assertj-core:3.25.3'

Se você usa JUnit 5, nenhuma dependência adicional é necessária. Para JUnit 4, o AssertJ também funciona sem problemas. Certifique-se de que a versão do AssertJ seja compatível com sua versão do Java (a versão 3.x requer Java 8 ou superior).

3. Início rápido — exemplo mínimo funcional

Após adicionar a dependência, você pode começar a usar o AssertJ imediatamente. O método principal é assertThat(), que recebe um objeto e retorna o objeto de asserção correspondente.

import static org.assertj.core.api.Assertions.assertThat;

import org.junit.jupiter.api.Test;

public class QuickStartTest {

    @Test
    void testSimpleAssertion() {
        String nome = "AssertJ";
        
        // Asserção básica
        assertThat(nome)
            .isNotNull()
            .isNotEmpty()
            .startsWith("Ass")
            .endsWith("J")
            .hasSize(7);
        
        // Verificação de números
        int numero = 42;
        assertThat(numero)
            .isPositive()
            .isGreaterThan(40)
            .isLessThan(50);
        
        // Verificação de coleções
        var lista = java.util.List.of("a", "b", "c");
        assertThat(lista)
            .hasSize(3)
            .contains("a", "b")
            .doesNotContain("z");
    }
}

Este exemplo demonstra a ideia central: uma cadeia de métodos, onde cada um retorna o mesmo objeto de asserção, permitindo escrever verificações sequenciais. Se qualquer asserção falhar, o teste é interrompido com uma mensagem clara.

4. Principais métodos/funções/classes

O AssertJ oferece centenas de métodos. Abaixo estão os 8 mais utilizados, com assinaturas, descrições e exemplos.

4.1. isEqualTo

Recommendations