Java 使用目录名对测试进行分组,而不是对Maven SureFire进行注释

Java 使用目录名对测试进行分组,而不是对Maven SureFire进行注释,java,maven,maven-plugin,Java,Maven,Maven Plugin,我使用(groups=“unit”)注释将TestNG测试分组为单元或集成,并使用以下Maven配置运行: <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.7.2&l

我使用(groups=“unit”)注释将TestNG测试分组为单元或集成,并使用以下Maven配置运行:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.7.2</version>
            <configuration>
                <groups>${test.group}</groups>
                <includes>
                    <include>**/*Test.java</include>
                    <include>**/Test*.java</include>
                    <include>**/When*.java</include>
                </includes>
                <argLine>${test.args.unit} -Xmx1024m</argLine>
            </configuration>
        </plugin>

org.apache.maven.plugins
maven surefire插件
2.7.2
${test.group}
**/*Test.java
**/Test*.java
**/当*.java
${test.args.unit}-Xmx1024m
我希望通过目录结构而不是注释来分离测试组,并将单元测试放在名为unit的目录下

例如,在src/test/java/foo/FooTests/MyFoo.java中进行单元测试 我想把它移到:src/test/java/foo/unit/FooTests/MyFoo.java。 然后更改Maven配置,以在单元子目录下拾取Java文件进行单元测试

我尝试通过更改插件配置来使用以下内容:

            <groups>${test.group}</groups>
            <includes>
                <include>**/unit/**/*Test.java</include>
                <include>**/unit/**/Test*.java</include>
                <include>**/unit/**/When*.java</include>
            </includes>
${test.group}
**/unit/***/*Test.java
**/unit/**/Test*.java
**/单位/**/When*.java

但这似乎不起作用。有什么想法吗?

第一件事是,你应该使用更新的(2.12.4),而且不要使用includes,因为maven surefire插件对单元测试有默认设置。如果您有集成测试,最好使用并适当命名它们。如果结合使用TestNG,听起来更像是集成测试。

如果将单元测试命名为“*Test”,将集成测试命名为“*it”,那么插件将选择正确的测试。

我们同时使用surefire和failsafe插件。第一个运行组为“unit”的TestNG测试类,第二个运行组为“integration”。我想停止使用组并使用目录来分隔测试组。最好使用只包含集成测试的separte集成测试模块,这是最好的解决方案。而且。