![](/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.