有时我会遇到一个问题,即名称以“IntegrationTests”结尾的 Grails 集成测试不起作用,并出现异常,表明 GORM 方法尚未添加到域类中。将这些测试重命名为“*IntegrationTest”(最后没有 s)后,它们工作正常。
一个简短的例子:
class MyIntegrationTests {
@Test
void myTest() {
assert MyDomainClass.count() == 0
}
}
将失败并出现以下异常:
Failure: myTest(de.myproject.MyIntegrationTests)
groovy.lang.MissingMethodException: No signature of method: de.myproject.MyDomainClass.count() is applicable for argument types: () values: []
Possible solutions: count(), ident(), print(java.io.PrintWriter), print(java.lang.Object), getCount(), wait()
at de.myproject.MyIntegrationTests.myTest(MyIntegrationTests.groovy:9)
将 MyIntegrationTests 重命名为 MyIntegrationTest 后,测试通过。
根据测试的名称,是否发生了某种魔术?我在 Grails 文档中找到的只是:“测试也可以使用 Test 的后缀而不是 Tests。”有什么想法吗?