Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Hamcrest, fui usar o Hamcrest sozinho e ele acusa erro no teste

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

1 resposta
solução!

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