【问题标题】:Cannot get @Rollback to work for my Spring JPA Integration Test无法让 @Rollback 为我的 Spring JPA 集成测试工作
【发布时间】:2010-11-04 15:47:13
【问题描述】:

这是我的一个小测试类。问题是它没有在每次测试运行后回滚事务。我做错了什么? :)

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

还有我的 spring 配置

<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 />

【问题讨论】:

    标签: java spring integration-testing


    【解决方案1】:

    除了@TransactionConfiguration,你还需要@Transactional

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

    【讨论】:

    • 我爱你! (不过你回答得太快了,我还需要 4 分钟才能接受)
    • 如果我及时出现,我会给出的答案 (+1)
    【解决方案2】:

    在 spring 4.0 之后,因为 TransactionConfiguration 已被弃用

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

    【讨论】:

      猜你喜欢
      • 2013-07-23
      • 1970-01-01
      • 1970-01-01
      • 2016-02-23
      • 1970-01-01
      • 2011-03-08
      • 1970-01-01
      • 1970-01-01
      • 2014-09-21
      相关资源
      最近更新 更多