我有一个非常简单的设置 - 一个调用服务方法的控制器.在此服务中,我将对象保存到数据库,并使用注入的JMSTemplate将JMS消息发送到队列 - 一旦保存.该服务默认启用了事务.
手动测试时 - 在ActiveMQ服务器关闭的情况下 - 抛出异常并回滚事务 - 其结果是对象也未保存到数据库.都好.
但是,当我通过集成测试运行它时(ActiveMQ仍处于运行状态),在调用控制器后使用计数查询检查对象没有保存在数据库中的断言失败了计数是1.我已经确认在测试开始时DB没有任何这些对象,在测试开始时添加另一个断言以确保计数为0.
这是预期的行为(可能是由于集成测试环境中事务的性质)还是我可能做错了什么?因为JMS服务器已关闭而仍然抛出异常 - 它是RuntimeException.
Grails集成测试和事务给人的印象是这是预期的 - 在这种情况下,是否有关于如何在集成测试中测试事务行为的最佳实践的建议?