Edd*_*die 4 unit-testing mojo maven
基于文档和邮件线程,我已经看到了将maven项目注入我的mojo的3种方法:
/**
* Project instance
*
* @parameter default-value="${project}"
* @required
* @readonly
*/
private MavenProject project;
@Component
private MavenProject project;
@Parameter( expression = "${project}" )
private MavenProject project;
Run Code Online (Sandbox Code Playgroud)
但无论我选择哪一个,当我根据我在maven docs中找到的示例运行单元测试时,project始终为null.
public void testMojoGoal() throws Exception {
File testPom = new File(getBasedir(),
"src/test/resources/unit/basic-test/sample-sh-project-config.xml");
ShunitResourcesMojo mojo = (ShunitResourcesMojo) lookupMojo("prepare",testPom);
assertNotNull(mojo);
mojo.execute();
}
Run Code Online (Sandbox Code Playgroud)
mojo执行包含(并失败)
Validate.notNull(project);
Run Code Online (Sandbox Code Playgroud)
我只是在自己的插件上工作并遇到了同样的问题.我找不到它的文档,但我看了maven-ant-plugin(https://svn.apache.org/repos/asf/maven/plugins/trunk/maven-ant-plugin)看看如何他们做到了.
我假设这是内置的测试工具行为,但您必须在测试pom.xml中添加一个"project"参数,以将值设置为MavenProjectStub的子类,例如在"ant-test"测试中:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ant-plugin</artifactId>
<configuration>
<project implementation="org.apache.maven.plugin.ant.stubs.AntTestMavenProjectStub"/>
<settings implementation="org.apache.maven.plugin.ant.stubs.SettingsStub"/>
<localRepository>${localRepository}</localRepository>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
我希望你已经得到了你的答案,只是张贴给那些人.
| 归档时间: |
|
| 查看次数: |
1570 次 |
| 最近记录: |