BeforeClass mit Spring Transaktions-tests
Ich bin mit dem Spring-Transaktions-test-Klassen zu tun, unit Tests für meine DAO-code. Was ich tun möchte, ist beim erstellen meiner Datenbank einmal vor allen tests ausgeführt werden. Ich habe ein @BeforeClass annotierte Methode läuft, bevor im Frühjahr lädt die Anwendung Kontext und konfiguriert das jdbcTemplate, also eigentlich habe ich nicht wirklich eine Verbindung zu der DB zu dieser Zeit. Gibt es eine Möglichkeit, um mein DB-setup einmal nach dem Kontext lädt, aber bevor die tests ausgeführt?
Dieser thead fragt die gleiche Frage aber die akzeptierte Lösung scheint einfach zu sein "nicht tun". Ich bin geneigt zu sagen, dies scheint nur wie es ist nicht machbar.
Ich habe seit verschoben auf Frühjahr 3 und bin mit dem jdbc:embedded-database xml-tag einrichten meiner Datenbank, bevor der test ausgeführt wird. Ich habe auch einen custom test (benutzerdefinierter test-execution-listener, wraps DBUnit Operationen, die für die Validierung/zurücksetzen den Zustand der Datenbank nach jedem test der Fall. Siehe blog.zenika.com/index.php?post/2010/02/05/...
Ich habe gerade es, und BeforeClass annotierte Methode läuft, nachdem der Frühling lädt die Zusammenhang..mit testNG
InformationsquelleAutor Adam B | 2009-06-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde das zweite die Ratschläge, die Sie sollten jeden Ihrer tests autonom und deshalb tun alle Ihr setup mit @Vor, statt mit @BeforeClass.
Wenn Sie möchten, bleiben Sie bei Ihrem Ansatz verwenden Sie einfach die @Before-Methode und eine einfache Boolesche überprüfen, um zu sehen, ob das setup bereits abgeschlossen. z.B.
Nicht zu extravagant, aber es funktioniert!
Siehe meine Antwort hier ein Beispiel für die im Frühjahr Transaktion test mit Anmerkungen mit dbunit.
Hoffe, das hilft!
Das stimmt - danke für den Hinweis it out. Ich nehme an, man könnte eine statische member-variable, aber das ist nur immer tiefer in das problem.
Wenn Sie databaseSetup static boolean, dies sollte funktionieren.
InformationsquelleAutor Pablojim
meine Lösung ein bisschen kompliziert, aber ich brauchte es für ein test-framework 🙂
haben Sie keine Angst vor der deutschen javadocs, die Methodennamen und-Einrichtungen sollte genug sein, um es zu bekommen
ERSTEN erstellen von Annotationen markieren Klassen oder Methoden für die Datenbankoperationen (create table und/oder insert-Anweisungen)
ZWEITEN erstellen Sie listener, die sieht für die Anmerkung, AbstractTestExecutionListener
ist eine Spring-Framework-Klasse aus
DRITTEN fügen Sie die Zuhörer auf die test-Durchführung
im Einsatz
ist es wichtig zu beachten - hüten Sie sich vor thread-Probleme während der Verwendung von testNg parallel testen, für diese zu arbeiten, es sollte etwas "synchronisiert" - Markierungen für die getJdbcTemplate /dataSource-Methoden in den Hörer
ps:
den code für die test-Basisklasse:
LogDurationTestExecutionListener und LogMethodNameTestExecutionListener sind benutzerdefinierte Listener nicht von der Feder, aber nicht notwendig für die schemaImport, um richtig zu arbeiten
InformationsquelleAutor Michael Pralow
Ich weiß nicht, was unit-Test-framework, die Sie verwenden, aber für JUnit, können Sie Ihre test-Klasse Unterklasse AbstractTransactionalJUnit4Springcontexttests die eine executeSqlScript diese Methode kann entweder in einem beforeclass oder beforemethod Methode. Meine Vorliebe ist die Verwendung BeforeMethod, da dies bedeutet, dass jeder der meine unit-tests sind eigenständig, auch wenn es bedeutet, dass meine unit-tests laufen ein wenig langsamer.
Ok, es ist möglich, mit TestNg wenn das keine Hilfe?
InformationsquelleAutor mR_fr0g
Versuchen Sie es mit Ihren alten Methoden anstelle der ausgefallenen Anmerkungen.
InformationsquelleAutor Martin Dale Lyness