Der weiße Box -Test erfordert, dass jede Codezeile mindestens einmal abgedeckt wird.
@APimodelProperty ("Disciple -Kategorie")@ManyToone // Setzen Sie das Feld der Betreffkategorie so, dass sie leer sind.Wenn wir das vorherige Beispiel für die Festlegung des Subjekts als Fall nicht leer sind, müssen wir zwei Situationen testen: Ausnahmen, wenn sie leer sind, und speichern sie normal, wenn sie nicht leer sind.
@Testpublic void Savetest () {logger.debug ("neue Einheit der Messkategorie"); MessunitUtunitCategory messunitcategory = new me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me messEritcategory (); logger.debug ("Test Save"); messunitUnitcategoryService.save (messunitUnitcategory);} Hier haben wir die save -Methode angerufen, aber IDE hat uns nicht dazu veranlasst, die Ausnahme zu fangen, aber es bedeutet nicht, dass die save keine Ausnahme ausführt. Es kann eine nicht überprüfte RuntimeException oder seine abgeleitete Ausnahme auswerfen.
Um diese Ausnahme zu testen, führen wir zuerst diese Codezeile aus, um zu sehen, welche Ausnahme aussieht.
org.springframework.dao.dataintegrityViolationException: konnte keine Anweisung ausführen; SQL [n/a]; Einschränkung [NULL]; Eine verschachtelte Ausnahme ist org.hibernate.exception.ConstraintViolationException: konnte keine Aussage ausführen
Verursacht durch: org.hibernate.exception.ConstraintviolationException: konnte keine Aussage ausführen
Verursacht durch: org.h2.jdbc.jdbcsqlexception: null nicht für Spalte "discipline_id" zulässig; SQL -Aussage:
Einfügen in messe_unit_category (id, discipline_id, is_asc) Werte (null,?,?) [23502-194]
Wir sehen drei Ausnahmen, zunächst JdbcSQLException der Einfügung dieses Datensatzes, die Ausnahme verursacht ConstraintViolationException , und die neue Ausnahme führt zu DataIntegrityViolationException .
Dies ist Caused by eine Ausnahmeverkapselung. Zum Beispiel kann die zugrunde liegende Schicht Ausnahmen ausführen, aber wir handhaben im Allgemeinen mit Ausnahmen auf relativ hohem Niveau.
Nehmen Sie dies als Beispiel. Daten DataIntegrityViolationException verstoßen gegen Ausnahmen, und es können viele Arten von Ausnahmen auftreten, sodass die Verarbeitungsmethoden dieser Ausnahme gleich oder ähnlich sind.
Wenn die zugrunde liegende Ebene eine JdbcSQLException auswirkt, dann ihre Methode aufruft, um die Ausnahme zu catch , und eine neue AusnahmekonstraintviolationException mit Ausnahme (Restriktionsverletzungsausnahme) ConstraintViolationException , wirft sie dann in die obere Schicht aus und fängt sie dann in die obere Ebene ein, erstellt eine neue DataIntegrityViolationException und wirft sie an und wirft sie sich an und wirft es uns an. Wir haben es nicht behandelt, und dann meldet die Konsole einen Fehler.
Der Vorteil, beizubehalten und nach oben zu werfen, besteht darin, dass ich eine Ausnahme verwenden kann, um eine ähnliche Situation zu bearbeiten. Wenn ich dann mit dieser Ausnahme zu tun habe, kann ich die Quelle verfolgen und genau auf das, was sie verursacht hat, genau halten. Wenn dieses Paket nicht verfügbar ist, müssen wir direkt zu catch liegenden Ausnahmen gehen, um den Fehler genau zu finden.
OK, die Ausnahme, die wir hier fangen müssen, ist die Ausnahme DataIntegrityViolationException , die uns von der Anwendung ausgelöst wird.
@Testpublic void Savetest () {logger.debug ("Grundlegende Testdatenvorbereitung"); MessunitUtunitCategory messunitcategory = new me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me messEritcategory (); Boolean catchException = false; logger.debug ("Test speichern, erwarten Sie eine Ausnahme"); try {messUrementunitCategoryService.save (messUmsunitCategory); } catch (DataNeTegRityViolationException e) {catchException = true; } logger.debug ("behaupten, dass die Erfassungsausnahme wahr ist"); AssertThat (catchException) .ISTRue ();}Führen Sie den Test durch und bestehen.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.