【发布时间】:2014-08-16 03:36:21
【问题描述】:
有没有办法在测试时将属性注入 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 测试。
【问题讨论】:
-
那么,当你运行一个测试时,MANIFEST.MF 到底在哪里?
-
当测试是一个独立的 java 应用程序而不是在容器中运行的应用程序时,为什么要在运行测试(可能是 JUnit?)时修改 java 清单?
标签: java junit manifest.mf