我的应用程序目前使用黄瓜方案作为测试用例。有黄瓜步骤类可以将测试用例转换为junit测试。
我对同一个测试用例有两个配置 - 一个是内存中,另一个是集成的(与数据库通信)。
我有两个弹簧配置文件:“inMemory”& “integratedTest”,两个junit跑步者有两个不同的配置文件开始两个测试。
对于我的综合测试,我用@Transactional
注释了黄瓜步骤类来帮助我处理数据库事务。但对于内存中的注释,它不适用于@Transactional
。我得到的错误是:
Transaction manager [ResourcelessTransactionManager] does not support transaction suspension.
我使用HibernateTransactionManager
作为集成配置文件的事务管理器。
我想知道在使用inMemory配置文件时是否可以以某种方式禁用@Transactional
,并在使用integratedTest配置文件时启用它。
欢迎任何其他高级解决方案。
答案 0 :(得分:0)
您可以将具有Transaction属性的Spring全局事务管理器用作Supports,这仅在已存在时才参与事务。
参考:http://learningviacode.blogspot.com/2012/10/attributes-in-springs-declarative.html
@Transactional(value =" tmanager",propagation = Propagation.SUPPORTS)
答案 1 :(得分:0)
在尝试了一些选项之后,我最后的方法是在doSuspend()
上实现ResourcelessTransactionManager
(拥有我自己的类实现)。由于suspend()
上的AbstractPlatformTransactionManager
方法会调用doSuspend()
,默认情况下会抛出异常。