Я проверяю, что список строк содержит определенное число, удовлетворяющее определенному условию, в частности, что они содержат подстроку, игнорируя регистр.
Итак, я придумал это (причины для поля 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 эта цифра отказа должна быть вычислена... есть ли способ распечатать ее для пользователя?