![](/img/trans.png)
[英]Maven Surefire plugin: what is meaning of filesystem in runOrder?
[英]What is the Jenkins FileSystem in a plugin?
我有一個可以通過測試的類,如果我在Jenkins之外的另一個Java類中調用它,則可以運行。 它的構造函數具有以下內容:
this.fs = FileSystems.getDefault();
稍后在執行過程中,我在看到空指針異常后添加了完整性檢查。
if (this.fs == null) {
throw new Exception("No FileSystem found");
}
因此,當此插件在Jenkins中運行時,默認的FileSystem
為null
並拋出該異常。 我的原始代碼使用Paths.get
但是我將其切換為this.fs.getPath(stringPath);
所以我可以用DI來創建一個FileSystem
單元測試。
在重構之前使用Paths.get
可以正常工作,但是我不確定使用該方法如何知道正確的FileSystem
,尤其是考慮到在此環境中似乎未設置默認值,尤其如此。
從來沒有聽說過這樣的問題。 聽起來您的環境已經嚴重破壞,因為這是由Java平台定義的。 嘗試平分秋千-逐步刪除插件中不重要的部分,直到找出導致問題的原因。
使用System.out
,我意識到構造函數無法在插件更新上運行。 保存作業配置時,它會運行。 因此,當我保存作業配置時,這通過副作用解決了我的問題。 我最初沒有設置this.fs
,因此更新插件不會運行這些新行。 因此,我不應該將不會用於配置的東西放到構造函數中。 在事后看來,這是有道理的,因為它實際上是一個@DataBoundConstructor
,它暗示它正被用於config中的數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.