2017-05-28 55 views
1

我正在對Jenkins Pipeline Shared Groovy Library中使用的代碼執行單元測試。具體來說,我需要模擬Jenkinsfile中的steps對象,該對象是org.jenkinsci.plugins.workflow.cps.DSL的一個實例。在我的Gradle構建中,我已經指定了如下所示的依賴關係:Jenkins管道 - 工作流CPS插件JAR依賴項

testCompile group: 'org.jenkins-ci.plugins.workflow', name: 'workflow-cps', version: '2.30', ext: 'jar' 

這是承載上述類的項目。沒有將ext指定爲JAR,Gradle將檢索.hpi文件,因爲這是在項目的pom.xml中定義的包裝;顯然我需要重寫這個並獲取我的項目的JAR。但是,在這樣做的過程中,Gradle並沒有下載workflow-cps JAR的傳遞依賴關係,我發現自己必須通過試驗和錯誤來確定所有依賴關係。有沒有辦法檢索傳遞依賴關係,還是這是workflow-cps項目的限制以及它如何定義它的pom.xml?

+0

你使用什麼測試框架? – stigsb

+0

我正在使用Spock。我保持'vars'目錄非常輕量級,並將複雜的邏輯添加到'src',所以我可以用標準單元測試來測試這個庫。 – Boon

回答

0

您想要模擬的CPS類不包含由插件或工作流庫引入的方法/變量,因此這種方法可能不會完全令人滿意。

面對同樣的挑戰我採取了務實的方法,在我的測試源中創建我自己的TestScript接口,並且模擬,而不是在類中鍵入腳本引用。

缺點是沒有對引用腳本的東西進行IDE代碼檢查,並且當我添加測試時(這也容易出錯,因爲我手動確保這些簽名匹配)必須手動向TestScript添加簽名。

但它的工作,並避免被拖入插件依賴地獄。