这是我的测试(maven-plugin-testing-harness 3.3.0,junit 5.6.2):
import java.io.File;
import org.apache.maven.plugin.testing.AbstractMojoTestCase;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
public final class MyMojoTest extends AbstractMojoTestCase {
@BeforeEach
public void setup() throws Exception {
this.setUp();
}
@Test
public void executeIt() throws Exception {
final File pom = new File("src/test/resources/my-test-pom.xml");
final MyMojo mojo = MyMojo.class.cast(
this.lookupMojo("mygoal", pom)
);
mojo.execute();
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的MyMojo(maven-plugin-api 3.8.4):
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
@Mojo(name = "my", defaultPhase = LifecyclePhase.COMPILE)
public final class MyMojo extends AbstractMojo {
@Parameter(defaultValue = "${project}", readonly = true)
private MavenProject project;
}
Run Code Online (Sandbox Code Playgroud)
问题是mojo返回的lookupMojo()没有project设置属性(它是null)。
这里提出了一些解决方案,但我不确定它如何与 JUnit 5 一起工作。
我尝试使用与上面提到的相同的配置。该插件工作正常,但似乎没有一个测试lookupMojo()有效。
类似的测试例子可以参考这里。setUp您的课程MyMojoTest和链接中提供的示例的方法有所不同。
super.setUp(); 应该调用而不是this.setUp()初始化类中的所有对象AbstractMojoTestCase。
maven-plugin-testing-harness 3.3.0 带有和的测试用例junit 5.6.2无法工作的可能原因是它们不是compatible。
原因是
maven-plugin-testing-harness被构建为与 兼容Junit4。最新更新是很久以前的事,即 2014 年 12 月 17 日。Junit 4并且Junit 5不兼容。我们必须利用Junit-Vintage-Engine它才能发挥作用。maven-plugin-testing-harness是使用 is 开发的JDk-7,其最低要求Junit 5是Jdk-8. harness来自插件清单文件的信息实现供应商 ID:org.apache.maven.plugin-testing
构建者:igor
Build-Jdk:1.7.0_55
规范供应商:Apache 软件
基金会 规范标题:Maven 插件测试机制
很少有其他链接证实了这一点。
可用于 Junit5 插件测试的库和信息链接非常少。尽管我还没有尝试过,但我只能找到其中的一小部分。
图书馆:
<dependency>
<groupId>com.soebes.itf.jupiter.extension</groupId>
<artifactId>itf-assertj</artifactId>
<version>0.11.0</version>
<scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
此链接中还有更多 Jupiter 扩展库
与之相关的例子。
| 归档时间: |
|
| 查看次数: |
1387 次 |
| 最近记录: |