Asserções de forma fluída para o Java.
Para que serve
AssertJ é uma biblioteca Java que fornece um conjunto rico de asserções e mensagens de erro verdadeiramente úteis, melhora a legibilidade do código de teste e é projetada para ser fácil de usar em seu IDE favorito.
Funcionalidades
- Asserções com recursos do Java 8
- Mensagens de erro descritivas
- Conjuntos de asserções (SoftAssertions)
Iniciando uma asserção
.assertThat(resultado)              // Tudo inicia a partir do assertThat()
    .isEqualTo(esperado)            // seguido dos método que olharemos
Asserções para itens individuais
.assertThat(resultado)
    .as("Nome: %s", nome)   // Mensagem descritiva em caso de falha.
    .isEqualTo(algo)        // Equals clássico
Asserções para coleções ou arrays
.assertThat(colecao)
    .filteredOn(predicate, lambda ou field)   // Filtra os itens
    .containsOnly(item...)                    // Exatamente os itens existentes
    .contains(item...)                        // Um ou mais itens que devem existir
    .doesNotContain(item...)                  // Um ou mais itens que não devem existir
    .extracting(lambda ou field)              // Extrai campo(s) dos itens do array
    .flatExtracting(lambda ou field)          // Extrai campo(s) do tipo lista de cada item do array
Testando uma exceção
.assertThatThrownBy(() -> acao())           // Ação que dispara uma exceção
    .isInstanceOf(Exception.class)          // Valida o tipo da exceção
    .hasMessageContaining("Erro X")         // Valida a mensagem
    
//ou
assertThatExceptionOfType(Exception.class)  // Valida o tipo da exceção
    .isThrownBy()                           // Ação que dispara uma exceção
    .withMessage("%s!", "Erro X")           // Valida a mensagem
    .withMessageContaining("Erro X")        // Ou parte da mensagem
Notas curiosas
- Além do Core, o AssertJ possui módulos extras para Guava, Joda, Neo4J, Databases e Swing.
- Você pode encadear um conjunto de assertions com o SoftAssertions coletando todos os erros ao mesmo tempo em vez de parar em cada Asserção individual.
- Você pode fazer asserção com o conteúdo de um arquivo utilizando assertThat(contentOf(arquivo)).