Wil*_*iam 5 maven-plugin maven-3
我有一个Maven插件,我试图使用的子类测试AbstractMojoTestCase
.该插件使用a Mojo
定义outputFolder
参数defaultValue
.通常不期望用户在POM中提供该参数.
@Parameter(defaultValue = "${project.build.directory}/someOutputFolder")
private File outputFolder;
Run Code Online (Sandbox Code Playgroud)
如果我在真实场景中使用插件,那么outputFolder将按预期进行默认.
但是,如果我测试Mojo
使用,AbstractMojoTestCase
那么在填充测试POM中定义的参数时defaultValue
,不会填充具有未在POM中定义的参数.
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.
}
}
Run Code Online (Sandbox Code Playgroud)
进一步:如果我outputFolder
在POM中定义参数如下:
<outputFolder>${project.build.directory}/someOutputFolder</outputFolder>
Run Code Online (Sandbox Code Playgroud)
那么${project.build.directory}
是不是在AbstractMojoTestCase内解决.
那么在测试时我需要做什么才能填充defaultvalue?
或者这是一个错误AbstractMojoTestCase
?
这是Maven-3.2.3,maven-plugin-plugin-3.2,JDK 8
你需要使用lookupConfiguredMojo
.
这是我最终使用的内容:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
当然,您需要替换myGoal
插件的目标.您还需要弄清楚如何断言您的插件已成功执行.
有关更完整的示例,请查看我为fmt-maven-plugin编写的测试
归档时间: |
|
查看次数: |
656 次 |
最近记录: |