如何使用 Maven surefire 排除具有给定类别的所有 JUnit4 测试?

Posted

技术标签:

【中文标题】如何使用 Maven surefire 排除具有给定类别的所有 JUnit4 测试?【英文标题】:How to exclude all JUnit4 tests with a given category using Maven surefire? 【发布时间】:2012-12-17 10:01:35 【问题描述】:

我打算用@Category 注释来注释我的一些JUnit4 测试。然后,我想排除在我的 Maven 构建上运行的那类测试。

我从Maven documentation 中看到,可以指定一个测试类别 运行。我想知道如何指定要运行的测试类别

谢谢!

【问题讨论】:

【参考方案1】:

你可以这样做:

您的 pom.xml 应包含以下设置。

<configuration>
   <excludes>
       <exclude>**/TestCircle.java</exclude>
        <exclude>**/TestSquare.java</exclude>
   </excludes>
</configuration>

如果您想要正则表达式支持,请使用

<excludes>
    <exclude>%regex[.*[Cat|Dog].*Test.*]</exclude>
</excludes>

http://maven.apache.org/surefire/maven-surefire-plugin/examples/inclusion-exclusion.html

如果要使用Category注解,需要进行如下操作:

@Category(com.myproject.annotations.Exclude)
@Test
public testFoo() 
   ....

在你的 maven 配置中,你可以有这样的东西

<configuration>
  <excludedGroups>com.myproject.annotations.Exclude</excludedGroups>
</configuration>

【讨论】:

我找不到任何引用 excludedGroups 的东西 @Hafiz 阅读这个.. github.com/junit-team/junit4/wiki/categories

以上是关于如何使用 Maven surefire 排除具有给定类别的所有 JUnit4 测试?的主要内容,如果未能解决你的问题,请参考以下文章

在测试执行 Maven Surefire 插件时排除日志跟踪

如何将 maven 插件转换为 gradle 插件(maven-surefire-puglin)?

如何使用 maven-surefire-plugin 在同一个项目中执行 JUnit 和 TestNG 测试?

如何使用 Maven Surefire 插件与不同的组进行测试和集成测试?

如何使 maven cobertura 和 surefire 插件一起工作?

Maven/Surefire 找不到要运行的测试