我只是在一个项目中将 Groovy 版本从 1.76 升级到 2.1,并且我有一个单元测试如下:
try{
sql.withTransaction{
sql.execute("Update table set name='tested' where id = 1")
throw new Exception()
}
}
catch(ignore){}
//Assert that name has been rolled back from update to 'tested'
以前在 1.76 中,这可以正常工作 - 抛出的异常导致事务回滚并且一切正常。但是,在 2.1 中情况并非如此——而且我已经看到,如果我将异常更改为 throw aRuntimeException
那么它会正确回滚。
我的假设是 Groovy 不再为检查的异常回滚我的事务 - 这是可以配置的吗?我可以让它在所有事务上回滚,而不是在捕获异常时返回并更新我的所有代码以显式回滚吗?