【问题标题】:Unit Testing Maven Mojo - Components and parameters are null单元测试 Maven Mojo - 组件和参数为空
【发布时间】:2013-03-08 21:21:08
【问题描述】:

根据文档和邮件线程,我看到了 3 种将 maven 项目注入我的 mojo 的方法:

/**
  * Project instance
  * 
  * @parameter default-value="${project}"
  * @required
  * @readonly
  */
private MavenProject project;


@Component
private MavenProject project;


@Parameter(  expression = "${project}" )    
private MavenProject project;

但无论我选择其中哪一个,当我根据我在 maven 文档中找到的示例运行单元测试时,项目始终为空。

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();     
}

mojo 执行包含(并失败)

Validate.notNull(project);

【问题讨论】:

标签: unit-testing maven mojo


【解决方案1】:

我只是在开发自己的插件并遇到了同样的问题。我找不到有关它的文档,但我查看了 maven-ant-plugin (https://svn.apache.org/repos/asf/maven/plugins/trunk/maven-ant-plugin) 以了解他们是如何做到的。

我假设这是内置的测试工具行为,但你必须在你的测试 pom.xml 中添加一个“项目”参数,以将值设置为 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>

我希望你已经得到了答案,只是发布给那些关注的人。

【讨论】:

    猜你喜欢
    • 2013-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-18
    • 2011-03-04
    相关资源
    最近更新 更多