Maven - 如何包含用于集成测试的'通用'插件?

时间:2017-10-24 16:30:34

标签: java maven junit integration-testing maven-plugin

我想编写一个可用于集成测试的插件。为简单起见,我们假设它是一个简单的MOJO:

@Mojo(name = "test", defaultPhase = LifecyclePhase.INTEGRATION_TEST)
public class IntegrationTestPlugin extends AbstractMojo {
    public void execute() {
        ...
    }
}

可以从另一个项目中调用此插件:

<plugin>
    <groupId>my.group.id</groupId>
    <artifactId>my.artifact.id</artifactId>
    <executions>
        <execution>
            <goals>
                <goal>test</goal>
            </goals>
        </execution>
   </executions>
</plugin>

这会让我的生活更轻松,因为我只是在不编写任何额外代码的情况下执行插件。为了给出一个想法,插件可以例如在产生本地Web容器,数据库......之后检查GET http://localhost:8080/<some endpoint>是否返回200,如项目所示。

我需要一个名称遵循约定(**/IT*.java, **/*IT.java or **/*ITCase.java)的类,但是在这种情况下如何发现和执行这些类?这与Mojo的execute()有什么关系?

简单地将SomeTestIT.java放在插件项目的src/main/test/...中(而不是在执行插件的项目中,就像没有插件时那样)不会起作用。我一直坚持如何继续。

这将如何工作以及Mojo类中的execute()应该是什么样的?

1 个答案:

答案 0 :(得分:0)

当您继承AbstractMojo时,除其他外,您必须覆盖getDefaultIncludes() 返回要包含的ant路径样式值:

 @Override
 protected String[] getDefaultIncludes() {
     return new String[]{ "**/IT*.java", "**/*IT.java", "**/*ITCase.java"};
 }

您应该从用于在Maven中执行集成测试的github上提供的maven-failsafe-plugin源代码中汲取灵感。