2016-11-04 4 views
0

Ich habe Spring Data Neo4j verdrahtet und funktioniert gut. Ich habe ein paar Komponententests eingerichtet und verwende die @Transactional Annotation für die Testklasse. Die Tests werden ausgeführt, aber die Daten, die sie schreiben, werden immer zurückgesetzt. In den Protokollen kann ich sehen:Rollbacks verhindern - Spring Data, JUnit, & Neo4J

] o.n.o.drivers.http.request.HttpRequest ... 
request: {"statements":[{"statement":"UNWIND {rows} as row MATCH ... 

Allerdings möchte ich dies zu unterdrücken, ich habe versucht mit (in Kotlin):

@Test 
@Commit 
fun myDbTest() {...} 

und

@Test 
@Rollback(false) 
fun myDbTest() {...} 

Aber die Anmerkung ist ignoriert?

Ich habe das gegenteilige Problem zu den meisten, wo der Rollback gewünscht wird, aber es funktioniert nicht :) In meinem Fall funktioniert der Rollback perfekt, und ich möchte es ausschalten.

+0

Entfernen Sie einfach Transaktion von der Testklasse und die Daten sollten persistent sein. –

+0

Ich habe das auch versucht, aber die Abwicklungsanweisungen werden immer noch am Ende des Tests ausgeführt. – Vince

+0

Welche Version von SDN verwenden Sie? Wenn es vor 4.2.x ist, kann es die Dokumentation hier beachten oder nicht: http://docs.spring.io/spring/docs/current/spring-framework-reference/html/integration-testing.html#testcontext-tx- Freigabe-Transaktionen. Wenn Sie dieses Verhalten wirklich brauchen, funktioniert es am 4.2.x. Alternativ können Sie eine 'TransactionTemplate' anstelle von' @Transactional' verdrahten, mit der Sie die Transaktionssemantik vollständig kontrollieren können (es ist nur mehr Code). – digx1

Antwort

1

Spring Integration Tests geschrieben gegen Spring Data Neo4j (SDN) zwischen Version 4.0.x und 4.1.x funktioniert nicht nach der official documentation. Dies liegt daran, dass die Transaction Manager-Implementierung nicht in das erwartete Spring Transaction-Ökosystem integriert wurde. Ab 4.2.x wurde dies nun behoben und wird gemäß der Dokumentation funktionieren.

Zum Zeitpunkt des Schreibens 4.2.0.M1 ist die neueste Version, enthält aber mehrere kritische Fehler. 4.2.0.RC1 ist fällig am 28. November 2016 und gerade jetzt 4.2.0.BUILD-SNAPSHOT ist eigentlich ziemlich stabil (und seit einiger Zeit).

Wenn Sie dieses Verhalten mit SDN vor 4.2.x verwenden müssen, können Sie eine TransactionTemplate statt @Transactional verdrahten, die Ihnen vollständige Kontrolle über die Transaktionssemantik ermöglichen wird.

Verwandte Themen