2011-11-30 37 views
0

我正在爲Grails開發JavaScript測試插件。我編寫了一些Groovy類來執行我已經存儲在我的src/groovy文件夾中的測試。我鉤入我的插件的_Events.groovy腳本中的測試事件並注入測試運行器的一個實例。從該測試運行器的實例中,我需要訪問存儲在src/js中的JavaScript文件來執行測試。如何從同一插件中的src文件訪問我的Grails插件中的文件?

plugin documentation指定從我的Gant腳本中獲取路徑的方法,但這在其他地方不起作用。我也嘗試通過grailsApplicationApplicationHolder訪問GrailsApplication,但我得到null。最後,我嘗試訪問BuildSettingsConfigurationHolder,但這些顯示爲空配置。

爲了讓我的插件能夠工作,我目前正在將JavaScript文件複製到應用程序的測試/資源文件夾中,以便它位於相對於工作目錄的已知位置,我認爲這是工程文件夾。這對我來說是侵入性和脆弱性的,所以我想找出一個「正確」的方法。

如何從我的測試運行器中獲取我的插件的路徑,以便我可以找到這些文件?

+0

的路徑,現在我只是路過在插件位置從_Events腳本到我的測試運行器的構造函數。這種方式更加清潔,但仍然讓我感到不適。 –

回答

2

如果你有BuildSettings和pluginManager豆(或依賴注入與def pluginManager或通過PluginManagerHolder),那麼你可以得到相反在複製文件與

new File(buildSettings.projectPluginsDir, pluginManager.getPluginPath('foo')) 
+0

我似乎無法獲得插件管理器的實例。 'PluginManagerHolder.currentPluginManager()'拋出一個IllegalStateException,因爲沒有插件管理器。我會假設這是因爲我從src中的一個文件中調用它來代替具有上下文的東西。 –

+0

調用的路徑是什麼 - 在請求期間還是新線程?或者從Gant之外的命令行? –

+0

調用來自_TestApp.groovy,因爲它是從'grails test-app'調用的。我將鉤子插入到我的插件的_Events腳本中的測試事件中,並在src/groovy中注入我的類的實例。我會在這個問題上加上這一點。 –

相關問題