我们有一个多模块Maven项目,并打算对此进行测试。因为我们的测试是非常同质的,而不是一遍又一遍地编写相同的测试,我们编写了一个参数化测试,它获取了所有要测试的文件并对它们运行测试。现在我们希望将其作为maven插件,以便您可以执行mvn xquerytestrunner:test
我创建了一个单独的项目,在那里创建了一个Java文件,并用
注释它 @Mojo( name = "xquerytester")
public class XQueryTestRunner extends AbstractMojo {
@Parameter( property = "xquerytester.querytotest", defaultValue = "" )
private static String queryToTest;
public void execute() throws MojoExecutionException, MojoFailureException {
JUnitCore junit = new JUnitCore();
Result result = junit.run(ParameterizedGenericXQueryTest.class);
}
}
现在我的问题。这会运行吗?它有意义吗?
我的另一个选择是在主模块的src / test / java文件夹中进行测试并使用mvn -Dtest=TestCircle test
运行它,但问题是我们使用Oracle的插件(oracle-soa-plugin
)弄乱项目周围的一切,但我们必须使用它。
我们的主要pom.xml有<packaging>pom</packaging>
,这就是为什么运行上面的测试目标不起作用的原因。它只是不构建或测试任何东西。如果我将其更改为jar
,则插件会在构建期间引发错误。而且我不能跳过构建阶段,因为插件只是做了它的东西。
我的目标只是为运行我的参数化测试的控制台提供一个衬垫。看起来甲骨文似乎没有阅读如何编写maven插件的方法,现在我必须使用它。
我们现在使用maven插件。这可以独立于oracle soa插件运行,也可以在具有“pom”packagint类型的mvn项目上运行。
Mojo课程:
@Mojo( name = "xsl")
public class XslTestRunner {
@Parameter( property = "xsl.name", defaultValue = "" )
private static String name;
public void execute() throws MojoExecutionException, MojoFailureException {
JUnitCore junit = new JUnitCore();
Result result = junit.run(ParameterizedGenericXslTest.class);
PrintHelper.printResults(result, TransformationTestType.XQUERY);
}
}
Maven Plugin Pom:
一般情况下,我按照以下说明操作:Your First Plugin