2016-07-19 4 views
1

Szenario: Es gibt ein Excel-Blatt, eine Spalte hat 1000 Datensätze .. Ich muss überprüfen, ob alle Werte sind gleich oder nicht.Junit assert.fail() -Methode wird gestoppt, die Ausführung, muss die Ausführung fortsetzen und geben Sie am Ende

Herausforderung: Wenn ich die assert.fail() -Methode verwende, wird die Ausführung gestoppt, wenn ein Fehler auftritt.

Erforderlich: Aber ich möchte die Ausführung fortsetzen und das Ergebnis am Ende geben. Wenn ein Wert nicht übereinstimmt, muss der Testfall fehlschlagen und die nicht übereinstimmenden Werte ausgegeben werden.

+0

Überprüfen Sie bitte Antwort auf Link http://stackoverflow.com/questions/10221891/continuing-test-execution-in-junit4-even-when-one-of-the-asserts-fails – fahad

Antwort

1

Fügen Sie diese Werte zu einem Set hinzu. Am Ende, wenn Set mehr als einen Wert hat (überprüfen Sie die Größe), dann drucken Sie die Werte. Dies bedeutet, dass alle Werte nicht gleich sind. Wenn die Größe 1 ist, sind alle Werte gleich.

+0

Ich habe die Logik für die Überprüfung von Werten sind gleich oder nicht .. aber meine Frage ist, die Ausführung fortzusetzen und das Ergebnis am Ende zu geben. Wenn ein Wert nicht übereinstimmt, muss der Testfall fehlschlagen und die nicht übereinstimmenden Werte ausgegeben werden – Sateesh

0

Man könnte so etwas wie dies tun:

Map<Whatever, Integer> unequalValues = new HashMap<>(); 
... iterate your rows; and for each row do 
    unequalValues.put(valueFromRow, rowIndex); 

Am Ende überprüfen Sie einfach, wenn unequalValues mehr als einen Eintrag enthält. Wenn ja, können Sie alle Einträge drucken; einschließlich des Zeilenindexes/der Zeilennummer. Und dann, am Ende, rufen Sie fail()

Wenn Sie nur daran interessiert sind, dass Sie nicht gleiche Werte haben, aber nicht in welcher Reihe sie sind ... ein Set anstelle einer Karte würde tun, auch.

0

Ich würde Excel durchlaufen, indem ich die Zeichenfolge der aktuellen Zeile, testString, mit expectedString vergleiche. Jedes Mal, wenn es nicht übereinstimmt, fügen Sie testString zu mismatches hinzu. Sobald die Excel-Tabelle vollständig getestet wurde, prüfen Sie, ob mismatches etwas enthält. Wenn dies der Fall ist, drucken Sie alle Werte innerhalb von mismatches und verwenden Sie dann einen JUnit Assert, um den Test zu beenden.

String expectedString = "myTestString"; 
Set<String> mismatches = new HashSet<String>(); 
while (...) // loop through Excel rows 
{ 
    String testString = getValueFromExcel(); 
    if (!testString.equals(expectedString)) 
    { 
     mismatches.add(testString); // add any values that don't match to 'mismatches' 
    } 
} 

if (mismatches.size() > 0) 
{ 
    System.out.println(mismatches.size() + " mismatches were found:"); 
    // dump the mismatches 
    for (String mismatch : mismatches) 
    { 
     System.out.println(" " + mismatch); 
    } 
} 
// now throw a JUnit assert that the test failed 
Assert.assertEquals(mismatches.size(), 0, "Verify that no mismatches were found"); 
Verwandte Themen