Grails中的内联插件测试未注入服务

Grails中的内联插件测试未注入服务,grails,grails-plugin,Grails,Grails Plugin,我的目标是为我自己的Grails插件编写测试。迄今采取的步骤: 步骤-在内部创建单独的grails应用程序(在本例中为testApp) Grails插件“test”文件夹 步骤-使插件成为 通过在BuildConfig.groovy中添加以下行来内联应用程序-testApp grails.plugin.location.PluginName='../../../../../PluginName' 问题在于,在单元测试中,服务(来自内联插件)不像普通的单元测试中的应用那样被注入。以下是样本测试:

我的目标是为我自己的Grails插件编写测试。迄今采取的步骤:

  • 步骤-在内部创建单独的grails应用程序(在本例中为testApp) Grails插件“test”文件夹
  • 步骤-使插件成为 通过在BuildConfig.groovy中添加以下行来内联应用程序-testApp

    grails.plugin.location.PluginName='../../../../../PluginName'

  • 问题在于,在单元测试中,服务(来自内联插件)不像普通的单元测试中的应用那样被注入。以下是样本测试:

    @TestFor(SampleService)
    class SampleServiceUnitSpec extends UnitSpec {
        def "Sample Test"(){
            setup:
               def test = 'ok'
    
            when:
               test = "changed"
    
            then:
               assert service
               assert "changed" == test
        }
    }
    
    如果此测试是从grails应用程序运行的,并且服务是该应用程序的一部分,则将注入该服务。如果此测试通过包含服务的内联插件从testApp运行,则不会注入服务。如果测试是插件单元测试且插件中声明了服务,则不会注入服务


    如何注入服务以便对其进行测试?关于如何最好地测试Grails插件,有什么好的文档、帖子等吗?谢谢

    为什么要在应用程序中为插件服务创建单元测试。你的应用程序只需要担心自己的代码,这不是更好吗

    我建议您分开考虑:插件类应该在插件中测试,应用程序类应该在应用程序中测试。从应用程序的角度来看,假设您的服务“应该可以正常工作”,因为它们在插件中经过了良好的测试

    另外,我建议不要在Grails插件中创建应用程序。测试文件夹仅用于测试类,仅此而已

    如果您只想维护插件的最后一个版本,您可以只创建一个应用程序(在插件外部的另一个文件夹中),并始终在那里更新


    如果您需要维护多个版本,或者多个Grails版本,那么使用Groovy脚本创建具有指定版本的测试应用程序可能是更好的方法。

    “在Grails Plugin'test'文件夹中创建单独的Grails应用程序(在本例中为testApp)”-您是否在插件中创建grails应用程序?是的。以下是我得出结论的来源:此应用程序仅用于测试插件Hank you Sergio。此插件用于多个应用程序。通过放置test/project/app1,我可以测试插件和应用程序之间的依赖关系(集成),同时把它放在一个地方——插件上