Gibt es einen Weg zur Testzeit, um eine Eigenschaft in das Java-Manifest zu injizieren (oder ein komplettes Manifest zu injizieren)?Java-Unit-Tests gesetzt Manifest-Eigenschaft
Wir lesen einen Wert aus dem Manifest (Versionsnummer), der zum Testzeitpunkt in null aufgelöst wird.
Bisher haben wir versucht, eine hartcodierte MANIFEST.MF-Datei in unseren Teststamm zu schreiben, aber es hat nicht funktioniert.
Dies ist der Code, den wir das Manifest lesen verwenden:
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();
}
Als letztes werden wir die Funktionalität wickeln, die das Manifest und verspotten sie liest, aber diese sind Integrationstests und sollen sei Black Box (dh, wir meiden Spott).
Zusätzliche Informationen: Java 7, Ausführen von Junit-Tests in IntelliJ oder von Gradle.
Also, wenn Sie einen Test durchführen, wo MANIFEST.MF befindet sich genau? –
Warum möchten Sie Java-Manifest ändern, wenn Sie Tests (wahrscheinlich JUnit?) Ausführen, wenn der Test eine eigenständige Java-Anwendung ist und keine Anwendung in einem Container ausgeführt wird? – czpona