在测试时是否有办法将属性注入Java Manifest(或注入整个清单)?
我们正在从清单(版本号)中读取一个值,该值在测试时解析为null。
到目前为止,我们已经尝试在我们的测试根中添加一个硬编码的MANIFEST.MF文件,但它没有用。
这是我们用来读取清单的代码:
private Attributes getManifest() {
URLClassLoader cl = (URLClassLoader) getClass().getClassLoader();
Manifest manifest;
try {
URL url = cl.findResource("META-INF/MANIFEST.MF");
manifest = new Manifest(url.openStream());
} catch (IOException e) {
throw Throwables.propagate(e);
}
return manifest.getMainAttributes();
}
作为最后的手段,我们将包装读取清单并模拟它的功能,但这些是集成测试,并且应该是黑盒子(即,我们要避免模仿)。
额外信息:Java 7,在IntelliJ或Gradle中运行Junit测试。