Обратная связь о результате AssertJ с повторяемыми утверждениями

Я проверяю, что список строк содержит определенное число, удовлетворяющее определенному условию, в частности, что они содержат подстроку, игнорируя регистр.

Итак, я придумал это (причины для поля failedResults станут очевидны):

    class ContainsIgnoringCase extends Condition<CharSequence> {
        private String lCString;
        private int failedResults = 0;
        int getFailedResults(){
            return failedResults;
        }

        ContainsIgnoringCase( String string ){
            lCString = string.toLowerCase();
        }

        @Override
        public boolean matches( CharSequence value ) {
            boolean result = value.toString().toLowerCase().contains( lCString );
            if( ! result ){
                failedResults++;
            }
            return result;
        }
    }

Если это не удается:

    assertThat( paramsPassed ).haveExactly( 7, new ContainsIgnoringCase( "documents" ));

он выводит List<String> paramsPassed, но не говорит фактическое количество сбоев.

Я думал, что это может помочь, но это не так:

    ContainsIgnoringCase cic = new ContainsIgnoringCase( "documents" );
    assertThat( paramsPassed ).as( "failed: " + cic.getFailedResults() ).haveExactly( 7, new ContainsIgnoringCase( "documents" ));

... это просто печатает «сбой 0», поэтому, очевидно, метод getFailedResults() вызывается до выполнения теста. Где-то внутри AssertJ эта цифра отказа должна быть вычислена... есть ли способ распечатать ее для пользователя?


person mike rodent    schedule 22.02.2017    source источник


Ответы (1)


Добавьте toString к вашему условию, как это, например:

    @Override
    public String toString() {
        return "elements containing '" + this.lCString + "' but it failed for " + getFailedResults();
    }

учитывая paramsPassed = list("documents", "2");, он выдаст ошибку, например:

Expecting elements:
<["documents", "2"]>
 to have exactly 7 times <elements containing 'documents' but failed = 1>
person Joel Costigliola    schedule 22.02.2017
comment
Большое спасибо... конечно, я должен считать успехи, а не неудачи... - person mike rodent; 23.02.2017