我尝试在项目中为域类编写集成测试。但是每次我运行测试时都会遇到一些错误。
我的代码如下:
class ProductIntegrationTest extends GroovyTestCase {
void testSave() {
def product = new Product(name: "phone")
product.save(flush: true, failOnError: true)
assert.....
}
}
运行测试后,例外是:
groovy.lang.MissingMethodException: No signature of method: Product.save() is applicable for argument types: () values: []
Possible solutions: save(), save(boolean), save(java.util.Map), wait(), last(), any()
但是,如果我为域类添加了@TestFor(Product)
注释,则错误已经消失。我在文档中找到了集成测试,我们不能放@TestFor
注释,因为它只用于单元测试。
任何人都有所了解?
答案 0 :(得分:2)
迟到的答案,但今天我遇到了这个问题。一个可能的问题是test/integration
目录中的不同测试正在扩展GrailsUnitTestCase
。执行grails test-app integration
时,这会给后续测试带来问题,但不会导致不正确扩展的测试GrailsUnitTestCase
。将这些课程移至test/unit
或将扩展名更改为GroovyTestCase
将解决此问题。
答案 1 :(得分:0)
我得到了同样的错误。我发现我忘记为测试环境设置数据源。在DataSource.groovy中,确保为每个数据源设置设置了数据源以进行开发。