我使用本教程创建了一个非常基本的设置来创建和测试一个Maven mojo。这两门课看上去就像这样。
Mojo:
/**
* @goal touch
* @phase process-sources
*/
public class MyMojo extends AbstractMojo {
public void execute() throws MojoExecutionException {
// stuff
}
}测试:
public class MyMojoTest {
@Rule
public MojoRule rule = new MojoRule();
@Test
public void testSomething() throws Exception {
File pom = new File("src/test/resources/pom.xml");
MyMojo myMojo = (MyMojo) rule.lookupMojo("touch", pom);
Assert.assertNotNull(myMojo);
myMojo.execute();
}
}到目前为止是可行的。然后我把它移到我自己的项目中,看看为什么我的测试不能工作。直到我将类移到另一个包之前,它仍然有效。
默认情况是org.apache.maven.plugin.my,我不确定这是对所有Maven插件的强制执行,还是从一些奇怪的属性中提取出来的,我不知道。
对此包不起作用的属性是:
错误信息是:
org.codehaus.plexus.component.repository.exception.ComponentLookupException: java.util.NoSuchElementException
role: org.apache.maven.plugin.Mojo
roleHint: org.acme:maven-my-plugin:1.0.0-SNAPSHOT:touch
at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:264)
at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:240)
at org.codehaus.plexus.PlexusTestCase.lookup(PlexusTestCase.java:205)
at org.apache.maven.plugin.testing.AbstractMojoTestCase.lookupMojo(AbstractMojoTestCase.java:389)
at org.apache.maven.plugin.testing.AbstractMojoTestCase.lookupMojo(AbstractMojoTestCase.java:334)
at org.apache.maven.plugin.testing.MojoRule.lookupMojo(MojoRule.java:164)
at org.apache.maven.plugin.my.MyMojoTest.testSomething(MyMojoTest.java:22)那么,我如何更改包呢?org.apache.maven.plugin.my听起来确实是一门教程。
发布于 2019-05-10 05:06:30
我发现了一堆愚蠢的错误,为什么我的方法(包括上面的)不能起作用,比如:
org.junit.jupiter.api.Test而不是org.junit.Test,因此MojoRule没有被正确初始化。https://stackoverflow.com/questions/56049275
复制相似问题