How to populate parameter "defaultValue" in Maven "AbstractMojoTestCase"? -


i have maven plugin attempting test using subclass of abstractmojotestcase. plugin mojo defines outputfolder parameter defaultvalue. parameter not expected provided user in pom.

@parameter(defaultvalue = "${project.build.directory}/someoutputfolder") private file outputfolder; 

and if use plugin in real scenario outputfolder gets defaulted expected.

but if test mojo using abstractmojotestcase while parameters defined in test pom populated, parameters defaultvalue not defined in pom not populated.

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 nullpointerexception on outputfolder.     } } 

further: if define outputfolder parameter in pom so:

<outputfolder>${project.build.directory}/someoutputfolder</outputfolder> 

then ${project.build.directory} not resolved within abstractmojotestcase.

so need defaultvalue populated when testing?

or fault in abstractmojotestcase?

this maven-3.2.3, maven-plugin-plugin-3.2, jdk 8

you need use lookupconfiguredmojo.

here's ended using:

public class myplugintest {         @rule     public mojorule mojorule = new mojorule();      @test     public void nosource() throws exception     {         myplugin plugin = (myplugin) mojorule.lookupconfiguredmojo(loadpom("testpom1"), "mygoal");         plugin.execute();          assertthat(plugin.getsomeinformation()).isempty();     }      public file loadpom(string foldername)     {         return new file("src/test/resources/", foldername);     } } 

of course need replace mygoal plugin's goal. need figure out how assert plugin executed successfully.

for more complete example, check out tests wrote fmt-maven-plugin


Comments