2017-02-22 14 views
0

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?

Antwort

1

ein toString, um Ihren Zustand wie diese zum Beispiel hinzufügen:

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

paramsPassed = list("documents", "2"); gegeben es einen Fehler geben wie:

Expecting elements: 
<["documents", "2"]> 
to have exactly 7 times <elements containing 'documents' but failed = 1> 
+0

Vielen Dank ... natürlich soll ich werden gezählt die Erfolge statt die Misserfolge ... –

Verwandte Themen