And*_*w M 8 java junit manifest.mf
在测试时有没有办法将属性注入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();
}
Run Code Online (Sandbox Code Playgroud)
作为最后的手段,我们将包装读取清单并模拟它的功能,但这些是集成测试,并且应该是黑盒子(即,我们避免嘲笑).
额外信息:Java 7,在IntelliJ或Gradle中运行Junit测试.
小智 2
您可能想尝试 jcabi-manifests 库:http://manifests.jcabi.com/。它是 Java 清单工具的抽象,允许您附加新数据,甚至在运行时组合多个清单。
典型用法是访问Manifests.DEFAULT单例,它在运行时保存应用程序的 MANIFEST.MF 条目。可以附加到该对象:
Manifests.DEFAULT.put("Test-Property", "Hello");
Run Code Online (Sandbox Code Playgroud)
ManifestsJavadoc:http ://manifests.jcabi.com/apidocs-1.1/com/jcabi/manifests/Manifests.html
现在,每当您Manifests.DEFAULT再次访问时,都会有“Test-Property”条目。注意Manifest.DEFAULT实现Map接口:
System.out.println(Manifests.DEFAULT.get("Test-Property")) // Prints "Hello"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1267 次 |
| 最近记录: |