2013-05-30 74 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