Como faço para o Hamcrest exibir o erro igual (ou parecido) com JUnit, fiz ele aqui e apareceu um monte de coisa, menos o erro, por isso não consigo conserta-lo
Como faço para o Hamcrest exibir o erro igual (ou parecido) com JUnit, fiz ele aqui e apareceu um monte de coisa, menos o erro, por isso não consigo conserta-lo
Olá Ricardo,
para definir a mensagem que aparece quando o teste falha você precisa sobrescrever dois métodos.
O primeiro dele é o describeTo
que recebe uma description
como parâmetro. O que você apendar nesta description
é o que vai aparecer na Expected
da mensagem de falha do JUnit. Por exemplo, a LeilaoMatcher do curso tem o seguinte método:
public void describeTo(Description description) {
description.appendText("leilao com lance " + lance.getValor());
}
Agora a mensagem que vai aparecer indicando qual o valor que veio que causou problema é o método describeMismatchSafely
. Ele recebe como primeiro parâmetro o que objeto actual
passado como primeiro parâmetro do assertThat e o segundo parâmetro a description que vai aparecer na mensagem de but
do JUnit. Por exemplo, poderíamos no LeilaoMatcher fazer:
@Override
protected void describeMismatchSafely(Leilao leilaoRecebido, Description mismatchDescription) {
mismatchDescription.appendText(" o leilao só tinha os lances ");
for(Lance lance : leilao.getLances()) {
mismatchDescription.appendText(lance.getValor() + " ");
}
}
Com estes dois métodos, a mensagem de erro apareceria assim:
java.lang.AssertionError:
Expected: leilao com lance 200
but: o leilao só tinha os lances 100 150 300 400