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))
.