Spring @Transactional funktioniert nicht im JUnit-test?
Bin ich mit Spring 3.2, Hibernate und JUnit 4.
Meiner Dao-Klasse ist wie folgt:
@Transactional public class SomeDaoImpl implements SomeDao {
Den update-Operationen auf diese Arbeit, wenn ausgeführt, die direkt von der web-Anwendung. Ich bin jedoch zu sehen, dass junit integration tests, bei denen die update-Methoden, die eigentlich nicht bestehen die änderungen. Ist etwas Rollen der Transaktionen zurück, wenn die junit-Methoden ausgeführt werden?
InformationsquelleAutor Nilesh | 2012-05-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Durch Referenz, Transaktionen sind nicht beibehalten, test Kontexten im Frühjahr. Wie bereits erwähnt, ist zwar ungewöhnlich, wenn Sie noch brauchen, um zu tun, so dass Sie verwenden können,
@TransactionConfiguration
und@ - Rollback
um das Standardverhalten ändern.InformationsquelleAutor nobeh
DAOs sollten nicht transaktional sein. Wie kann ein DAO wissen, ob Sie teilnehmen sollten in einer größeren Transaktion?
Dienstleistungen sollen eigene Transaktionen in den typischen Frühling geschichteten Architektur.
Es ist typisch, zum ausführen von unit tests für Datenbanken in einer solchen Weise, dass Sie Rollen zurück. Sie nicht möchten, dass Ihre tests zu ändern, die Datenbank, es sei denn, Sie haben eine test-Datenbank, können Sie löschen und neu erstellen.
Die Frage sollte sein: Wie machen Sie Ihre tests, wie geschrieben, einen commit für die Transaktion? Wenn Sie nie Begehen, du wirst nie sehen die Datensätze.
Nicht meine Antwort ändern.
Es war nicht sein soll, einen Kommentar auf Ihre Antwort sowieso :-). BTW die beste Praxis, die Sie oben erwähnt ist auch veröffentlicht. Ich denke, du hast verloren bei dem Versuch zu pedantisch und vergaß die Antwort auf die eigentliche Frage!
Wenn die beste Praxis ist es so gut veröffentlicht, warum sind Sie nicht nach es? Ich habe keine Möglichkeit zu schließen, was Sie wissen basiert auf dem, was du gepostet hast. Und ich glaube, ich habe die Antwort auf die Frage. Die Tatsache, dass Sie nicht begangen hat, passend ist. Andere haben vorgeschlagen, die gleiche Sache. Wie ist, dass nicht die Beantwortung der Frage?
InformationsquelleAutor duffymo
Aus dem "Testing" - Abschnitt der Dokumente, können Sie die
Anmerkung wenn Sie nicht möchten, SpringJUnit4ClassRunner Rollback für Ihre Transaktionen.
InformationsquelleAutor stevedbrown