Wenn ich und @Transactional
kombiniere, bleibt mein Test stehen und wird nie wiederhergestellt.@SpringBootTest und @Transactional bewirkt, dass der Test einfriert
Ich habe eine Demonstration des Problems here gebaut.
getAgain
schlägt aufgrund einer eindeutigen Constraint-Verletzung fehl, die durch @Before
verursacht wird. Um dies zu beheben, würde ich normalerweise eine @Transactional
above the class hinzufügen, um meine Änderungen nach jedem Test automatisch rückgängig zu machen. Dies führt jedoch dazu, dass der Test einfriert und nie wiederhergestellt wird.
Eine Idee, warum diese beiden Anmerkungen nicht gut zusammen spielen?
Weil Sie eine Sackgasse bekommen. Sie starten die vollständige Anwendung (ja, das ist, was @ SpringBootTest tut), dann fügen Sie Daten ein (aber die Transaktion ist noch offen). Dann rufst du einen Controller an, der versucht, auch eine Transaktion zu öffnen (beachte, dass ich dir gesagt habe, dass du die volle Anwendung startest), aber weil die andere Transaktion nicht beendet wurde, kann sie nicht aus der Tabelle lesen. Eine Sackgasse. –
Irgendwelche Vorschläge, wie ich das lösen kann? Ich möchte meine Anwendung Ende-zu-Ende mithilfe einer eingebetteten Datenbank für einen bestimmten Datensatz testen. – Corey