我正在将应用程序从 Grails 1.3.7 升级到 2.2
到目前为止,它相对无痛且直截了当。
直到我们开始运行单元测试。
在 1.3.7 下,所有测试都通过了。
在 2.2 之下,现在大约有一半失败了。测试没有改变,它们仍然是老式的 mockDomain ......
最让我担心的是某些领域类缺少基本的 gorm 功能。
.list 和 .get 之类的东西
失败:testList_NoMaxSpecified_10Shown(com.litle.bldvwr.StreamControllerTests) | groovy.lang.MissingMethodException:没有方法签名:>com.litle.bldvwr.Stream.list() 适用于参数类型:() 值:[] 可能的解决方案:list()、list()、list()、列表(java.lang.Object),列表(java.util.Map),>列表(java.lang.Object)
和
失败:>testAddFailureOutputToHappyPathWithIntegrationFailure(com.litle.bldvwr.LogParserServiceTests) | groovy.lang.MissingMethodException:没有方法签名:>com.litle.bldvwr.Result.get() 适用于参数类型:() 值:[] 可能的解决方案:get(java.io.Serializable), get(java .lang.Object)、>get(java.io.Serializable)、getId()、grep()、grep(java.lang.Object)
此类故障的一般模式是:
mockDomain(Phase, [new Phase(id:1, name: 'xxx')])
mockDomain(Result, [new Result(id:1, phase: Phase.get(1), failureOutput:"")])
logParserService.addFailureOutputTo(Result.get(1))
正是最后一次获取导致无签名错误。
虽然我们打算开始使用新的单元测试功能,但我希望避免重写 500 多个当前测试。
想法,想法?
-克拉克