Ich habe eine Basisklasse, die alle meine Controller-Tests erweitern. Dies ist so eingerichtet, dass jeder Komponententest seine eigene Fixture zum Laden haben kann.Wie man Play Framework eincheckt, wenn ein Komponententest eine Datenbank ausführt/update/delete
Also überprüft @Before override, welche Vorrichtung für den Test erforderlich ist, lade sie und starte dann den Test.
Das Problem hier ist, dass dies die Vorrichtung jedes Mal neu lädt. Selbst wenn die Methode nur eine Auswahl in der Datenbank vorgenommen hat und nichts geändert hat.
Die interne Speicherdatenbank, die Play Framework verwendet, ist die H2-Datenbank. Ich frage mich, ob es eine Möglichkeit gibt, nach einem Komponententest zu prüfen, ob es eine Änderung in der Datenbank gegeben hat, und wenn nicht, überspringe das erneute Laden genau der gleichen Daten.
Ich versuchte identity_scope, es gibt Null egal was.
ich weiß nicht, ob es eine Möglichkeit, es mit nur JUnit zu erreichen, aber es ist ein Werkzeug, in dem Sie diese Belastungen problemlos verwalten können. Sein dbunit und du kannst es leicht im Spiel verwenden. Soweit ich sagen kann, besteht der Hauptzweck von Junit darin, Tests voneinander zu trennen. Aber ich sage nicht, dass das nicht möglich ist. Vielleicht könntest du es mit @BeforeClass in Kombination mit der Testsuite versuchen. –
Ich schaute nach oben und es sieht so aus, als müsste ich alle meine bestehenden Unit-Tests umgestalten. Danke für den Vorschlag, aber ich kann nicht die Zeit dafür nehmen. – KdgDev
Haben Sie erwogen, von der Speicherdatenbank in die tatsächliche physische Datenbank zu wechseln? –