【问题标题】:Use directory name to group tests rather than annotation for Maven SureFire使用目录名称对测试进行分组,而不是为 Maven SureFire 进行注释
【发布时间】:2012-12-20 18:38:04
【问题描述】:

我有 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 文件以进行单元测试。

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

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

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

【问题讨论】:

    标签: java maven maven-plugin


    【解决方案1】:

    第一件事是您应该使用更新的maven-surefire-plugin (2.12.4) 并且不要使用包含,因为 maven-surefire-plugin 具有单元测试的默认值。如果您有集成测试,最好使用maven-failsafe-plugin 并适当地命名它们。如果你结合使用 TestNG,它听起来更像是集成测试。

    【讨论】:

    • 我们同时使用了surefire和failsafe插件。第一个运行带有“单元”组的 TestNG 测试类,第二个运行组“集成”。我想停止使用组并使用目录来分隔测试组。
    • 最好使用只包含集成测试的单独集成测试模块是最好的解决方案。此外。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-14
      • 1970-01-01
      • 2021-12-17
      相关资源
      最近更新 更多