2016-10-30 2 views
1

Ich habe 2 JUnit Tests in der gleichen Testklasse, die jeweils als @Transactional gekennzeichnet sind, erstellen die ersten Benutzer und die zweite erstellen Benutzer und überprüfen, ob wir diese Benutzer erhalten können.@Transactional rollt nicht in JUnit Test

Das Problem ist, dass wenn der zweite Test ausgeführt wird, Benutzer, die von dem ersten Test erstellt werden, immer noch in der DB sind.

Haben Sie eine Idee, warum @Transactional in der gleichen Testklasse nicht gut funktioniert? Außerdem werden Daten am Ende der Testklasse zurückgesetzt.

Ich benutze Spring Boot + Mysql + Hibernate.

Vielen Dank für Ihre Zeit.

+0

sind Sie Unit-Tests oder Integrationstests ausführen? – developer

+0

Sie haben einen transactionManager() definiert? http://stackoverflow.com/a/35943700/641627 – alexbt

+1

Ich habe versucht, es zu tun, aber ich hatte einige Fehler wie 'Konnte ServletContext-Ressource nicht öffnen [/application.properties]' @Transactional ist für diesen Zweck gemacht, warum funktioniert es nicht? – Zak

Antwort

0

Versuchen Sie so etwas und achten Sie auf den Klassenpfad Ihrer ... context.xml. Sie können auch @Transactional über Klasse verschieben, wenn Sie möchten, dass jede Methode transaktional oder höher als jede gewünschte Methode ist.

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration({"classpath:/config/your-context.xml","classpath:/config/ehcache.xml"}) 
@Transactional 
@WebAppConfiguration 
public class IntegrationTests { 

@Autowired 
private ApplicationContext appContext; 

@Autowired 
public FileDao fileDao; 

@Autowired 
public SessionFactory sessionFactory; 

@Test 
public void test1() throws ClassNotFoundException, InstantiationException, IllegalAccessException, IOException{ 
    .... 
    .... 
    .... 
    } 
} 
+0

Vielleicht funktioniert es für Spring MVC, ich habe versucht, application.properties als ContextConfiguration zu verwenden, aber es funktioniert nicht – Zak

+0

Sie Spring Boot verwenden, habe ich nicht gesehen, sorry. Dies funktioniert im Frühjahr MVC. – paun90

0

zu Konfigurationsklasse hinzufügen @EnableTransactionManagement

+0

Keine Änderungen, @Transactional funktioniert immer noch nicht gut – Zak