使用目录名称为Maven SureFire分组测试而不是注释

时间:2012-12-20 18:38:04

标签: java maven maven-plugin

我将TestNG测试与(groups =“unit”)注释组合为单元或集成,并使用以下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>

我想按目录结构而不是注释分隔测试组,并将单元测试放在名为unit的目录下。

所以例如一个单元测试:src / test / java / foo / FooTests / MyFoo.java 我想将它移动到:src / test / java / foo / unit / FooTests / MyFoo.java。 然后更改Maven配置以获取单元子目录下的Java文件以进行单元测试。

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

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

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

2 个答案:

答案 0 :(得分:0)

首先,您应该使用更新的maven-surefire-plugin(2.12.4),而且不要使用包含,因为maven-surefire-plugin具有单元测试的默认值。如果您有集成测试,请更好地使用maven-failsafe-plugin并对其进行适当命名。如果组合使用TestNG,听起来更像集成测试。

答案 1 :(得分:0)

如果您将单元测试命名为'* Test'并将集成测试命名为'* IT',那么插件将选择正确的测试。