Mam wtyczkę Maven, które próbuję przetestować przy użyciu podklasy AbstractMojoTestCase
. Wtyczka Mojo
definiuje parametr outputFolder
z defaultValue
. Ten parametr zasadniczo nie powinien być dostarczany przez użytkownika w POM.Jak wypełnić parametr "defaultValue" w Maven "AbstractMojoTestCase"?
@Parameter(defaultValue = "${project.build.directory}/someOutputFolder")
private File outputFolder;
Jeśli użyję wtyczki w rzeczywistym scenariuszu, outputFolder zostanie domyślnie ustawiony zgodnie z oczekiwaniami.
Ale gdybym przetestować Mojo
pomocą AbstractMojoTestCase
wtedy, gdy parametry zdefiniowane w POM testowym są wypełniane, parametry z defaultValue
, które nie zostały zdefiniowane w POM nie są wypełniane.
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.
}
}
dalej: jeśli zdefiniować parametr w POM outputFolder
tak:
<outputFolder>${project.build.directory}/someOutputFolder</outputFolder>
następnie ${project.build.directory}
NIE rozwiązany w AbstractMojoTestCase.
Co muszę zrobić, aby uzyskać wartość domyślną podczas testowania?
Czy to błąd w AbstractMojoTestCase
?
To Maven-3.2.3, Maven-plugin-plugin-3,2, JDK 8
To jest nieco stary, ale czy kiedykolwiek znaleźć rozwiązanie? Stoję w obliczu tego samego problemu. – GuiSim
Nie, nie, przepraszam @GuiSim. Ale jeśli ** znajdziesz rozwiązanie, proszę, opublikuj to tutaj. – William
Edytuj: patrz odpowiedź. – GuiSim