Unable to get @Rollback to work for my integration test using Spring JPA

This is a small test class that I have. The problem is that it does not roll back the transaction after each test run. What have I done wrong?:)

@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); } } 

and my spring config

 <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 /> 
+6
java spring integration-testing
source share
2 answers

You need @Transactional in addition to @TransactionConfiguration :

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

in spring 4.0 later because TransactionConfiguration is deprecated

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

All Articles