使用注入集成测试Grails服务

使用注入集成测试Grails服务,grails,groovy,integration-testing,Grails,Groovy,Integration Testing,我在集成测试Grails服务时遇到问题,因为测试中的服务没有被注入到我的测试中。我已经按照Stackoverflow上其他问题的答案中的建议进行了操作,但至今仍无法注入我的服务。以下类位于//test/integration/com/example下: package com.example import grails.test.GrailsUnitTestCase class MyServiceIntegrationTest extends GroovyTestCase { My

我在集成测试Grails服务时遇到问题,因为测试中的服务没有被注入到我的测试中。我已经按照Stackoverflow上其他问题的答案中的建议进行了操作,但至今仍无法注入我的服务。以下类位于
//test/integration/com/example
下:

package com.example

import grails.test.GrailsUnitTestCase

class MyServiceIntegrationTest extends GroovyTestCase {

    MyService service;

    public void testService() {
        assert service != null
    }
}
我试过从命令行(
grails测试应用程序
)和IDEA内部执行这两个命令,结果都是相同的失败,即
service
is
null

这是Grails1.3.6


关于如何让我的集成测试正常工作,有什么建议吗?

自动连线在集成测试中的工作方式与在框架的其他部分中的工作方式相同,因此您需要确保该属性的命名与服务的命名方式相同,只是使用了相应的取消命名

class MyServiceIntegrationTest extends GroovyTestCase {
    def myService

}

假设您的服务是一个名为MyService的对象。

自动连接在集成测试中的工作方式与在框架的其他部分中的工作方式相同,因此您需要确保该属性的命名与服务的命名方式相同,除非使用了相应的unCamelCase

class MyServiceIntegrationTest extends GroovyTestCase {
    def myService

}

假设您的服务是一个名为MyService的对象。

对-它是按名称自动注入的,而不是按类型。您可以将字段输入为
MyService MyService
(例如,对于IDE自动完成)或使用
def
,但对于注入来说,它的名称很重要。谢谢,我想我的困惑是因为我在应用程序的其余部分使用了按类型自动连线,IntelliJ在使用def时将提供与在本例中使用类型时相同的自动完成功能。它了解春豆,并推断其类型。很酷!对我来说,虽然intelliJ显示了它的自动连线,但运行时我为myService设置了null。有什么想法吗?对-它是按名称自动注入的,而不是按类型。您可以将字段输入为
MyService MyService
(例如,对于IDE自动完成)或使用
def
,但对于注入来说,它的名称很重要。谢谢,我想我的困惑是因为我在应用程序的其余部分使用了按类型自动连线,IntelliJ在使用def时将提供与在本例中使用类型时相同的自动完成功能。它了解春豆,并推断其类型。很酷!对我来说,虽然intelliJ显示了它的自动连线,但运行时我为myService设置了null。有什么想法吗?