【发布时间】:2013-02-05 16:03:48
【问题描述】:
我正在将应用程序从 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()、list(java.lang.Object)、list(java.util.Map)、>list(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 多个测试。
想法,想法?
-克拉克
【问题讨论】: