我在 STS 中创建了简单的 Grails 插件项目。我正在使用 Spring Security Core 插件,它添加了一些域类。我创建了一个集成测试,它只是创建一个域类(用户)的实例,然后保存它。运行集成测试时出现以下错误:
Failure: testSomething(com.resonance.rwp.core.tests.UserServiceTests)
groovy.lang.MissingMethodException: No signature of method: com.resonance.rwp.core.domain.User.save() is applicable for argument types: () values: []
Possible solutions: save(), save(boolean), save(java.util.Map), wait(), any(), wait(long)
at com.resonance.rwp.core.tests.UserServiceTests.setUp(UserServiceTests.groovy:14)
我不明白,由于某种原因,域类似乎没有通过 GORM 映射。我遇到的所有事情都涉及人们尝试在单元测试中使用 GORM,但我肯定正在运行集成测试。非常感谢任何帮助。
这是源码,非常简单:
class UserServiceTests {
@Before
void setUp() {
User user = new User(username: "Test");
user.save();
}
@After
void tearDown() {
// Tear down logic here
}
@Test
void testSomething() {
fail "Implement me"
}
}
我还尝试将所有内容都转移到测试本身中。显然 setUp 方法失败了。
最佳答案
我在新生成的插件上也遇到了这个问题,发现问题是新生成的插件不依赖于 hibernate。我将以下内容添加到 BuildConfig.groovy:
plugins {
runtime ":hibernate:$grailsVersion"
}
这导致问题消失。我对 Grails 不太熟悉,无法了解为什么错误消息暗示了 save
等持久性方法的实际存在,但至少我让它工作了:)
关于Grails 集成测试 : Domain Classes Not Functioning,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8959081/