Temos um conjunto de testes que usa principalmente asserções JUnit com matchers Hamcrest. Um membro de nossa equipe começou a experimentar o AssertJ e impressionou as pessoas com sua sintaxe, flexibilidade e declaratividade. Há um recurso que o JUnit fornece para o qual não consigo encontrar um equivalente em AssertJ: adicionar uma mensagem de falha de declaração personalizada.
Frequentemente comparamos objetos que não são feitos para serem lidos por humanos e terão Ids ou UUIDs de aparência aleatória e é impossível dizer o que eles deveriam ser pelos dados que contêm. Esta é uma situação inevitável para nossa base de código, infelizmente, como parte do propósito que ela cumpre é mapear dados entre outros serviços sem necessariamente entender o que é.
No JUnit, o assertThat
método fornece uma versão com um String reason
parâmetro antes doMatcher<T>
param. Isso torna trivial adicionar uma string de depuração curta para esclarecer o problema, como o que a comparação deve significar para um ser humano.
O AssertJ, por outro lado, fornece um milhão de métodos genéricosstatic assertThat
diferentes que retornam alguma forma de interface Assert ou uma de suas muitas classes de implementação. Essa interface não fornece uma maneira padrão de definir uma mensagem personalizada a ser incluída com as falhas.
Existe alguma maneira de obter essa funcionalidade da API AssertJ ou uma de suas extensões sem ter que criar uma classe assert customizada para cada tipo de declaração ao qual queremos adicionar mensagens?
fonte
withFailMessage
importa; Eu gosto de AssertJ, mas isso é uma merda.Para sua informação, isso está documentado no novo site da AssertJ, consulte https://assertj.github.io/doc/#assertj-core-assertion-description .
fonte
Use o
as()
método embutido em AssertJ. Por exemplo:assertThat(myTest).as("The test microservice is not active").isEqualTo("active");
fonte