Gibt es eine Möglichkeit, den Namen der Methode programmatisch zu erhalten, die in einem JUnit-Testfall fehlschlägt? , d. H. Wenn Assert.assertTrue (ClassName.methodName) in @Test fehlschlägt, kann ich nur den Namen der @Test-Methode erhalten, die die Assertion hat, aber nicht in der Lage ist, methodName zu erhalten, was die Assertion nicht bestanden hat. Wir haben fast 300 JUnit-Tests mit jeweils eigenen @BeforeClass-, @Before, @Test-, @After- und @AfterClass-Methoden und möchten den Methodennamen protokollieren, der die Assertion nicht bestanden hat.Wie können wir den Namen der Methode erhalten, die die Assertion fehlgeschlagen ist
0
A
Antwort
0
Werfen Sie einen Blick auf https://github.com/swfsm/junit-fail-logger.
Es ist ein Annotationsprozessor, der in der Kompilierungszeit Methoden mit der Anmerkung org.junit.Test
annotiert und Assertions mit try catch blockiert, um fehlgeschlagene Assertion zu protokollieren.
So
assertTrue(myMethod(""));
wird
try {
assertTrue(myMethod());
} catch (AssertionError e) {
System.err.println("assertTrue(myMethod())")
throw(e);
}
Verfahren transformiert werden, die konfigurierbar zum Protokollieren aufgerufen wird und jede statische Methode String
Parameter akzeptieren kann (Wertparameter konfigurierbar und ist).
Verwandte Themen
- 1. Antwortnachricht ist fehlgeschlagen-Assertion fehlgeschlagen
- 2. Wie können Sie die Namen der Methodenparameter erhalten?
- 3. Können wir die on_click-Methode für Daten von gridview hinzufügen?
- 4. Können wir die Methode aufrufen, nachdem die Anwendung minimiert wurde?
- 5. Generische Assertion fehlgeschlagen
- 6. Java-Programm Assertion fehlgeschlagen
- 7. So erhalten Sie die E-Mail, wenn wir den Namen der Person ausgewählt haben
- 8. Da connect die parseCookie-Methode nicht mehr verwendet, wie können wir Sitzungsdaten mit Express erhalten?
- 9. Die SetUp-Methode ist fehlgeschlagen. System.Runtime.InteropServices.COMException
- 10. Eigen C++ Assertion fehlgeschlagen
- 11. Python Basemap "Assertion fehlgeschlagen"
- 12. Können wir die Betriebssystemumgebungsvariablen in Java lesen?
- 13. Können wir die Methode des Gradientenabfalls im Maximumentropiemodell verwenden?
- 14. Debug-Assertion fehlgeschlagen. nullptr
- 15. Den Namen der aktuellen Methode dynamisch abrufen
- 16. Assertion Text Antwort fehlgeschlagen
- 17. Können wir konfigurieren Gruppen in Azure AD SAML Assertion
- 18. Wie bekomme ich den Namen der Methode, die die Ausnahme verursacht
- 19. Was ist die Strategie, wenn die Assertion fehlschlägt
- 20. C++ Iterator Vergleich Assertion fehlgeschlagen
- 21. Erhalten Sie den vollständig qualifizierten Namen der Methode
- 22. Können wir den MACRO-Namen als spezifische Zeichenfolge definieren?
- 23. Wo können wir die ganze Liste der benannten Sprachwerte sehen?
- 24. Debug Assertion fehlgeschlagen Opencv Funktion
- 25. Debug Assertion fehlgeschlagen in mfc140ud.dll
- 26. Wie können wir State in Webservices erhalten?
- 27. Assertion fehlgeschlagen: Bereich> 1.19209
- 28. Verwenden von JasperReports: Können wir die Felder der Tabelle so sortieren, dass die Seite dynamisch ist?
- 29. Können wir den Namen oder den Namen eines Pakets in Android Studio 1.5 ändern?
- 30. Können wir die Methode service() von der Methode destroy() in Servlet aufrufen?
Dies ist keine Antwort auf Ihre Frage, aber hoffentlich immer noch hilfreich. Erwägen Sie, Ihre Tests neu zu schreiben, sodass jede Testmethode eine einzige Assertion enthält. Dann sind der Name des Tests und die Methode, die die (gescheiterte) Assertion enthält, identisch. Mit diesem Ansatz erhalten Sie auch andere Vorteile, die hier nicht berücksichtigt werden. –
Über was C-Otto schrieb ... denken Sie daran, dass die Idee der Komponententests Ihnen helfen soll, Ihre Probleme ** schnell zu isolieren/zu lösen **. Also, wenn dein Setup so kompliziert ist, dass du so viel "prep/teardown" -Code brauchst ... vielleicht sagt dir das nur, dass du für eine Sekunde zurücktreten und überlegen solltest, wie du deine Tests "verbessern" kannst ein Weg, der sie ... besser macht, auf Probleme aufmerksam zu machen. – GhostCat
Tatsächlich verwenden wir JUnit, um Regressionstestszenarien zu automatisieren (!!) Wir haben bereits über 300 Szenarien automatisiert und das Umschreiben aller Tests wäre teuer.
Wir wollten beim Identifizieren von Testfehlern Zeit sparen, indem Sie die fehlgeschlagenen Methoden speziell protokollieren, sodass wir nicht die gesamte Protokolldatei durchsuchen müssen, um die Fehlerursache zu finden.
Von Assertion Failure Stack-Ablaufverfolgung kann ich die Zeile in dem Skript abrufen, das den Fehler enthält. Gibt es eine Möglichkeit, den Inhalt dieser Java-Dateizeile aus dem ausführbaren Jar zu holen? Ich denke, das ist die einzige verbleibende Option. –