2017-05-26 2 views
1

Ich benutze Spring-Boot, JUnit5, Mybatis.Transaktion Rollback funktioniert nicht im Testfall in @Nested Klasse von JUnit5

@SpringJUnitJupiterConfig(classes = {RepositoryTestConfig.class}) 
@MapperScan 
@Rollback 
@Transactional 
public class TestClass { 
    @Autowired 
    private TestMapper testMapper; 

    @BeforeEach 
    void init() { 
     User user = new User(); 
     testMapper.insert(user);  
    } 

    @Test 
    public void test1() { 
     // (1) success rollback 
    } 

    @Nested 
    class WhenExistData { 
     @Test 
     public void test2() { 
      // (2) rollback not working 
     } 
    } 
} 

(1) funktioniert Rollback. Und folgendes Protokoll wird ausgegeben.

2017-05-26 22:21:29 [INFO ](TransactionContext.java:136) Rolled back transaction for test context ... 

Aber (2) funktioniert nicht. Ich möchte in der Lage sein, in @Nested zurück zu rollen.

Antwort

3

Dies ist zu erwarten: die Frühling Testcontext Framework- hat für verschachtelte Testklassen nie unterstützt „Vererbung“.

So ist Ihr "around around" tatsächlich der richtige Weg, um Ihr Ziel zu diesem Zeitpunkt zu erreichen.

Beachten Sie jedoch, dass ich Unterstützung für "Pseudo-Vererbung" für verschachtelte Testklassen in Verbindung mit SPR-15366 hinzufügen kann.

Grüße,

Sam (Autor des Frühlings Testcontext Rahmen)

0

ich es auf folgende Weise gelöst ..

@SpringJUnitJupiterConfig(classes = {RepositoryTestConfig.class}) 
@MapperScan 
@Rollback 
@Transactional 
public class TestClass { 
    @Autowired 
    private TestMapper testMapper; 

    @BeforeEach 
    void init() { 
     User user = new User(); 
     testMapper.insert(user);  
    } 

    @Nested 
    @SpringJUnitJupiterConfig(classes = {RepositoryTestConfig.class}) 
    @MapperScan 
    @Rollback 
    @Transactional 
    class WhenExistData { 
     @Test 
     public void test2() { 
     } 
    } 
} 
+1

Würden Sie bitte [ein Problem im JUnit 5 Projekt erstellen] (https://github.com/junit-team/ junit5/issues/new), also einige – Nicolai

+0

erstellt Problem. https://github.com/junit-team/junit5/issues/868 –

+0

Oh, verdammt, ich habe vergessen, meinen Kommentar zu bearbeiten. Argh! Ich habe versehentlich mit dem falschen Projekt verlinkt, [dieses] (https://github.com/sbrannen/spring-test-junit5) könnte besser gewesen sein. Aber wir werden sehen ... – Nicolai