Ich habe ein Maven-Plugin, das ich versuche, mit einer Unterklasse der AbstractMojoTestCase
zu testen. Das Plugin Mojo
definiert einen outputFolder
Parameter mit einer defaultValue
. Von diesem Parameter wird im Allgemeinen nicht erwartet, dass er vom Benutzer im POM bereitgestellt wird.Wie den Parameter "defaultValue" in Maven "AbstractMojoTestCase" zu füllen?
Und wenn ich das Plugin in einem realen Szenario verwende, wird der outputFolder wie erwartet in die Standardeinstellungen übernommen.
Aber wenn ich die Mojo
testen Sie die AbstractMojoTestCase
dann mit, während im Test POM definierten Parametern bestückt sind, Parameter mit einem defaultValue
, die nicht im POM definiert sind, werden nicht aufgefüllt.
public class MyPluginTestCase extends AbstractMojoTestCase {
public void testAssembly() throws Exception {
final File pom = getTestFile("src/test/resources/test-pom.xml");
assertNotNull(pom);
assertTrue(pom.exists());
final MyMojo myMojo = (BaselineAssemblyMojo) lookupMojo("assemble", pom);
assertNotNull(myMojo);
myMojo.execute(); // Dies due to NullPointerException on outputFolder.
}
}
Weiter: wenn ich den outputFolder
Parameter in der POM definieren wie folgt:
<outputFolder>${project.build.directory}/someOutputFolder</outputFolder>
dann ist ${project.build.directory}
NICHT im AbstractMojoTestCase aufgelöst.
Was also muss ich tun, um beim Testen den Standardwert zu erhalten?
Oder ist das ein Fehler in der AbstractMojoTestCase
?
Dies ist Maven-3.2.3, Maven-Plugin-plugin-3.2, JDK 8
Diese etwas alt, aber haben Sie jemals eine Lösung finden? Ich stehe vor dem gleichen Problem. – GuiSim
Nein, habe ich nicht, sorry @GuiSim. Aber wenn ** Sie ** eine Lösung finden, bitte, bitte posten Sie es hier. – William
Bearbeiten: siehe Antwort. – GuiSim