这是我的一个小测试课程。问题是它在每次测试运行后都没有回滚事务。我做错了什么? :)
@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);
}
}
和我的春季配置
<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 />
答案 0 :(得分:14)
除@Transactional
之外,您还需要@TransactionConfiguration
:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "/META-INF/catalog-spring.xml" })
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)
@Transactional
public class TermTest { ... }
答案 1 :(得分:0)
,因为不推荐使用TransactionConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "/config/spring-config.xml")
@Transactional
public class UserTest {
@Rollback
public void test(){
}
}