gpt4 book ai didi

unit-testing - 单元测试 Maven Mojo - 组件和参数为空

转载 作者:行者123 更新时间:2023-12-05 00:30:57 25 4
gpt4 key购买 nike

根据文档和邮件线程,我看到了 3 种将 maven 项目注入(inject)我的 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);

最佳答案

我只是在开发自己的插件并遇到了同样的问题。我找不到有关它的文档,但我查看了 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>

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

关于unit-testing - 单元测试 Maven Mojo - 组件和参数为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15512404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com