Junit忽略我在服务中的@Transactional注释

时间:2014-01-30 09:12:45

标签: java spring hibernate transactions

我们的项目有弹簧服务。例如UserService。

这些服务使用@Transactional注释。

我们只是尝试执行涉及这些服务的junit测试,并且出于某种原因,@ Transnsalal注释被忽略。 (例如,我使用没有@Transactional的@Test,它转到一个确实是@Transactional的服务,在该服务中,它保存了一个新对象(实体),在事务结束之前,实体正在DB中保存(提交)。)

我想指出,我们不希望我们的junit测试自己使用@Transactional进行注释。

是否可以强制执行junit以不忽略我们服务中的@Transactional注释?

谢谢,

2 个答案:

答案 0 :(得分:0)

您应该明确告诉JUnit使用事务(示例来自参考):

@ContextConfiguration(locations={"example/test-context.xml"})
@TransactionConfiguration(transactionManager="txMgr", defaultRollback=false)
public class CustomConfiguredTransactionalTests {
    // class body...
}

然后你可以使用@ NonTransactional / @ Rollback / etc注释来控制特定方法的行为。

答案 1 :(得分:0)

如前所述,需要手动配置,因为事务不会在Spring测试上下文中保留。

可以找到此主题的Spring引用here