我们的项目有弹簧服务。例如UserService。
这些服务使用@Transactional注释。
我们只是尝试执行涉及这些服务的junit测试,并且出于某种原因,@ Transnsalal注释被忽略。 (例如,我使用没有@Transactional的@Test,它转到一个确实是@Transactional的服务,在该服务中,它保存了一个新对象(实体),在事务结束之前,实体正在DB中保存(提交)。)
我想指出,我们不希望我们的junit测试自己使用@Transactional进行注释。
是否可以强制执行junit以不忽略我们服务中的@Transactional注释?
谢谢,
答案 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