java - 排除特定测试在 jUnit 中并行运行

标签 java maven parallel-processing junit4

我最近偶然发现了一种通过 jUnit 并行执行测试的简单方法,方法是在 java 项目的 pom.xml 文件中指定以下内容:

<plugin>
 <groupId>org.apache.maven.plugins</groupId>
 <artifactId>maven-surefire-plugin</artifactId>
 <configuration>
  <parallel>classes</parallel>
 </configuration>
</plugin>

我发现有 2 个测试类(我们称它们为“badtestclass1”和“badtestclass2”)由于其中测试的编写方式而不断受到这种并行执行的惩罚。理想情况下,我会重构这些测试类以使其表现更好,但在此期间,我想知道是否有一种巧妙的方法可以“排除”这些特定类的并行执行。基本上,有没有办法并行执行其他所有内容,然后依次执行这两个(或其他顺序,无关紧要)。像下面这样的东西会起作用吗?

<plugin>
 <groupId>org.apache.maven.plugins</groupId>
 <artifactId>maven-surefire-plugin</artifactId>
 <configuration>
  <parallel>classes</parallel>
  <excludes>
   <excludesFile>badtestclass1</excludesFile>
   <excludesFile>badtestclass2</excludesFile>
  </excludes>
 </configuration>
</plugin>

最佳答案

您可以使用 jcip @NotThreadSafe 注释您不想并行化的类并保留 surefire 配置,因为它在您的起始示例中。这样,每当 surefire 找到一个带注释的类时,它只会在一个线程中执行它。解释的对here在“并行测试执行和单线程执行”段落中。

关于java - 排除特定测试在 jUnit 中并行运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24811430/

相关文章:

java - 如何在 Tomcat 上的多个 Web 应用程序中处理共享 native 库

java - 在 Netbeans 中找不到 Maven

java - 获取从一个 JFrame 到另一个带有 textArea 的弹出 JFrame 的设置文本

hibernate - 使用 hibernate、hibernate 注释和 ehcache 的 Maven 依赖项是什么?

java - 是否可以使用 Nexus 镜像私有(private) Maven S3 存储库?

c - 如何使用 SIMD 计算字符出现次数

linux - R 编程 - 使用 PBS 在多节点 linux 集群上提交作业

java - 解释 Java VM 非标准选项的好资源

java - 为了运行Java企业应用程序需要执行哪些步骤

R降雪并行,Rscript.exe随着时间的推移逐渐变得不活跃