2010-11-04 9 views
6

Voici une petite classe de test que j'ai. Le problème est qu'il ne recule pas la transaction après chaque exécution de test. Qu'est ce que j'ai mal fait? :)Impossible de faire fonctionner @Rollback pour mon test d'intégration Spring JPA

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations = { "/META-INF/catalog-spring.xml" }) 
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true) 
public class TermTest 
{ 
    @Autowired 
    private CatalogService service; 
    @Rollback(true) 
    @Test 
    public void testSimplePersist() 
    { 
     Term term = new Term(); 
     term.setDescription("Description"); 
     term.setName("BirdSubject8"); 
     term.setIsEnabled("F"); 
     term.setIsSystem("F"); 
     term.setTermType("TERM"); 
     service.createTerm(term); 
    } 
} 

et ma config printemps

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean"> 
    <property name="persistenceUnitName" value="catalog2"></property> 
</bean> 

<bean id="catalogService" class="com.moo.catalog.service.CatalogService"> 
    <property name="termDao" ref="termDao"></property> 
</bean> 

<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" /> 

<bean id="transactionManager" 
     class="org.springframework.orm.jpa.JpaTransactionManager"> 
    <property name="entityManagerFactory" ref="entityManagerFactory" /> 
</bean> 

<tx:annotation-driven /> 

Répondre

14

Vous devez @Transactional en plus @TransactionConfiguration:

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations = { "/META-INF/catalog-spring.xml" }) 
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true) 
@Transactional 
public class TermTest { ... } 
+0

I l Ove vous! (vous avez répondu trop rapidement cependant, besoin de 4 minutes de plus car je peux accepter une réponse) – willcodejavaforfood

+1

exactement la réponse que j'aurais donnée si je l'avais montré dans le temps (+1) –

+0

@seanizer - Je vais upvoter votre commentaire au moins :) – willcodejavaforfood

0

au printemps 4.0 plus tard parce que TransactionConfiguration est dépréciée

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations = "/config/spring-config.xml") 
@Transactional 
public class UserTest { 
    @Rollback 
    public void test(){ 
    } 
}