2013-05-30 70 views
0

我的目标是为我自己的Grails插件编写测试。采取措施至今:在Grails中没有为插件插件测试注入服务

  1. 步骤 - 创建单独的Grails应用程序(在本例中,testApp)内 Grails的插件“测试”文件夹
  2. 步骤 - 建立一个插件是 内嵌的应用程序 - 在BuildConfig.groovy添加以下行testApp

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

的问题是,在单元测试中,服务(从内联插件)不像注册单元测试中的常规应用那样注入。下面是样本测试:如果这个测试是从的Grails应用程序运行和服务是应用程序的一部分

@TestFor(SampleService) 
class SampleServiceUnitSpec extends UnitSpec { 
    def "Sample Test"(){ 
     setup: 
      def test = 'ok' 

     when: 
      test = "changed" 

     then: 
      assert service 
      assert "changed" == test 
    } 
} 

服务注入。如果此测试是通过包含服务的内联插件从testApp运行的,则不会注入该服务。如果测试是插件单元测试和插件中声明的服务,则不会注入该服务。

如何注入服务以便测试?任何好的文档,posts.etc关于如何最好的测试Grails插件?谢谢

+1

“在Grails插件的'test'文件夹中创建单独的Grails应用程序(在我们的例子中为testApp) - 你在插件里面创建一个Grails应用程序吗? – dmahapatro

+0

是的。这里是我得出这个结论的来源: – latvian

+0

http://www.slideshare.net/mjhugo/building-grails-plugins-tips-and-tricks – latvian

回答

0

为什么你要为应用程序内的插件服务创建一个单元测试。不应该是更好的你的应用程序只是担心自己的代码?

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

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

如果您只想维护插件的最后一个版本,则只能创建一个应用程序(位于您的插件之外的另一个文件夹中)并始终在此处更新。

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

+0

谢谢你塞尔吉奥。这个插件用于多个应用程序。通过放置test/project/app1,我可以测试插件和应用程序之间的依赖关系(集成),同时将它保存在一个地方 - 插件 – latvian