Ich überprüfe, dass eine Liste von Strings eine bestimmte Zahl enthält, die eine bestimmte Bedingung erfüllt, insbesondere, dass sie einen Teilstring enthalten, wobei Groß- und Kleinschreibung ignoriert wird.AssertJ Ergebnis-Feedback mit "iterable behauptet"
So kam ich mit diesem nach oben (Gründe für die failedResults
Feld wird deutlich werden):
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;
}
}
Wenn diese dann versagt:
assertThat(paramsPassed).haveExactly(7, new ContainsIgnoringCase("documents"));
es druckt die List<String> paramsPassed
, aber es doesn‘ t sagen die tatsächliche Anzahl der Fehler.
Ich dachte, das möglicherweise den Trick tun könnte, aber es funktioniert nicht:
ContainsIgnoringCase cic = new ContainsIgnoringCase("documents");
assertThat(paramsPassed).as("failed: " + cic.getFailedResults()).haveExactly(7, new ContainsIgnoringCase("documents"));
... diese nur druckt „0 fehlgeschlagen“, so offensichtlich die Methode getFailedResults()
, bevor der Test durchgeführt wird aufgerufen . Irgendwo in den Eingeweiden von AssertJ muss diese Fehlerzahl berechnet worden sein ... Gibt es irgendeine Möglichkeit, sie für den Benutzer auszudrucken?
Vielen Dank ... natürlich soll ich werden gezählt die Erfolge statt die Misserfolge ... –