Ich habe hier einen JUnit-Testfall, um eine einfache Klasse zu testen. Grundsätzlich enthält die Klasse nur eine Methode namens "sum", die die Summe zweier Zahlen zurückgibt. Um zu testen, ob dies richtig ist, verwende ich die folgende Methode: Assert.assertEquals(2, my_object.sum(1, 2));
Das Ergebnis wird in einer Registerkarte auf Eclipse in einem Abschnitt namens "Fehler Trace" angezeigt. Die Nachricht lautet: junit.framework.AssertionFailedError: expected:<2> but was:<3>
. Ist es möglich, diese Nachricht zu erhalten und in eine String-Variable zu schreiben?Wie bekomme ich eine Ausgabe von JUnit assertEquals() -Methode und legte es in eine Variable?
Antwort
aus der Java-doc assertEquals wird
Asserts that two objects are equal. If they are not, an AssertionError without a message is thrown. If expected and actual are null, they are considered equal.
Sie haben AssertionError
zu fangen, wenn Ihr Zustand ausfällt.
diesen Code Versuchen:
@Test
public void myTest() throws Exception{
String assertionError = null;
try {
Assert.assertEquals(2,3);
}
catch (AssertionError ae) {
assertionError = ae.toString();
}
System.out.println(assertionError);
}
OUTPUT:
java.lang.AssertionError: expected:<2> but was:<3>
Für weitere Informationen über AssertionError Besuch java doc: AssertionError und Assert
Sorry, aber was ist der Sinn dieses? Die Idee der JUnit-Tests besteht darin, eine ** automatisierte ** Ausführung zu ermöglichen. Das gesamte Framework basiert auf der Idee, dass fehlgeschlagene Testfälle ... AssertionErrors werfen; und das Framework, das all Ihre Tests ausführt, fängt sie ab. Sicher, Sie können sie selbst fangen, aber wenn Sie das tun, können Sie die ganzen neun Meter gehen und alle Junit-Tests komplett wegwerfen. Weil du es nur ** wertlos gemacht hast **. – GhostCat
@ Jägermeister Du hast absolut recht. Es hat keinen Sinn, den AssertionError abzufangen. Da das OP diese spezifische Frage gestellt hat (für seine Hausaufgaben), habe ich geantwortet. – Unknown
Ich habe diesen Teil; Ich habe mich nur gefragt, ob es eine tiefere Bedeutung gibt, die ich vermisse. Wie in: sogar Hausaufgaben; Sie würden erwarten, dass Lehrer nach "vernünftigen" Dingen fragen sollten; anstatt die Schüler zu bitten, einen Rahmen völlig "kaputt" zu benutzen. – GhostCat
assertEquals
ist eine void
Methode. Sie können das Ergebnis nicht als Variable angeben. Aber Sie können die Ausnahme mit try/catch
Block erhalten.
try{
assertEquals("foo", "foo1"); //will fail
} catch(AssertionError e){
String message = e.getMessage();
//do whatever you want with e
}
Ich habe es versucht, aber es funktioniert nicht. Eigentlich geht das nicht zum Catch, wenn das assertEquals fehlschlägt. Die nächsten Zeilen werden nicht ausgeführt, wenn sie fehlschlagen. –
Mein schlechtes, reparierte es! Das Problem ist, dass 'AssertionError'' Exception' nicht um 'Error' erweitert. Daher ist es besser, 'AssertionError' zu fangen, wie @Unknown vorgeschlagen. –
- 1. assertEquals in JUnit-Test
- 2. Java JUnit assertEquals mit langen
- 3. Junit-Test - assertEquals für Ausnahme
- 4. Benutzerdefinierte Ausnahmebedingungsnachricht mit JUnit assertEquals?
- 5. legte formatierte Ausgabe in eine Datei, Perl-Format
- 6. Wie bekomme ich eine Umrissspezifikation in Java JUnit?
- 7. Junit-Ausgabe und OutOfMemoryError
- 8. Wie bekomme ich eine Variable von einer privaten Methode zu einer statischen Methode?
- 9. Wie bekomme ich eine "Methode nicht erlaubt"
- 10. PHP legte HTML in eine Zweigvariable?
- 11. Wie kompiliere ich eine .net-Lösung und bekomme die Ausgabe?
- 12. Was ist der beste Weg, um den expected_value in assertEquals() -Methode in jUnit
- 13. Wie bekomme ich eine Ausgabe von "git diff-tree --stdin"?
- 14. JUnit, das assertTrue() oder assertEquals() für String?
- 15. Wie erzwingt BigDecimal in JUnit assertEquals zu runden?
- 16. Wie wählt man Werte aus Radio-Buttons und legte sie in eine PHP-Variable
- 17. bekomme ich eine "undefinierte Variable" auf isset
- 18. Unerwarteter Fehler im JUnit-Test bei Verwendung von assertEquals
- 19. Wie erfasse ich PHP-Ausgabe in eine Variable?
- 20. Wie bekomme ich die Ausgabe von curl in eine Variable in Perl, wenn ich sie mithilfe von Backtics aufrufe?
- 21. Wie kann ich eine Variable in sbt
- 22. Wie legte ich SelectedItem für eine RibbonComboBox mit MVVM fest?
- 23. Ausgabe eine Variable in einem Servlet-Speichern
- 24. Wie bekomme ich eine "Debug" -Variable in meinem Django-Vorlagenkontext?
- 25. Wie bekomme ich eine Ausgabe auf adb shell input keyevent?
- 26. Wie bekomme ich eine globale Variable in einer Funktion, während letztere eine homonyme lokale Variable hat?
- 27. Erste Anwendung Ausgabe in eine Variable Python
- 28. Scrapy legte zwei Spinnen in eine Datei
- 29. Wie eine öffentliche Methode in diesem Programm testen junit mit
- 30. php Weitergabe Ausgabe in eine Variable
Was zu tun versuchen Sie wirklich? – sisyphus
Warum möchten Sie das tun? –
Da ich ein Web-System erstellen muss, um Klassen mit JUnit-Testfällen als Hausaufgabe zu bewerten, muss ich diese Nachricht nehmen und sie dem Endbenutzer zeigen. –