当前位置: 首页 > 知识库问答 >
问题:

JUnit 5测试在IntelliJ内部并行执行,并在Maven本地执行,但不在Google Cloud Build上的Maven Docker容器内执行

从元明
2023-03-14

我在Maven项目中使用JUnit 5。

我的junit平台。属性如下所示:

junit.jupiter.execution.parallel.enabled=true
junit.jupiter.execution.parallel.mode.default=concurrent

在IntelliJ内部或本地使用Maven运行测试时,测试是并行执行的。

但是,当在Maven Docker容器中的Cloud Build上运行它们时,它们似乎是按顺序运行的。

他们是这样称呼的:

steps:
  - name: 'maven:3-jdk-11-slim'
    args: [
      'mvn',
      # https://stackoverflow.com/a/53513809/3067148
      '-Dorg.slf4j.simpleLogger.showDateTime=true',
      '-Dorg.slf4j.simpleLogger.dateTimeFormat=HH:mm:ss,SSS',
      '-B',
      'test'
    ]

为什么它们不能并行执行呢?

共有1个答案

龙洛城
2023-03-14

可以使用并行执行配置策略(ParallelExecutionConfigurationStrategy)配置所需的并行性和最大池大小等属性。JUnit平台提供了两种现成的实现:动态和固定。或者,您可以实施自定义策略。

请记住,ParallelExecutionConfigurationStrategy类仍处于“实验”状态,并且还不稳定。可能会发生意外行为。

由于您没有设置特定的配置策略,以下部分适用:

如果未设置配置策略,JUnit Jupiter将使用系数为1的动态配置策略。因此,所需的并行性将等于可用处理器/内核的数量。

在https://junit.org/junit5/docs/current/user-guide/#writing-tests-parallel-execution-config了解更多详情

 类似资料:
  • 当在我的pom.xml中启用强制使用JUnit47提供程序时,我得到: pom.xml如下所示

  • 问题内容: 我有一个包含单元测试的Go文件,其中一些使用了公共变量。我正在测试的代码中使用了另一个全局变量。所有这些都可能导致问题。 在Go中,当我们执行位于同一文件中的测试时,它们如何运行?并行还是下一个不会在前一个完成之前开始? 问题答案: 测试起来真的很容易: 使用运行它,输出显示它是顺序的: 因此,正常的测试是依次执行的,但是请不要忘记未定义顺序:如何依次运行golang测试? 还要注意,

  • 我正在将并行执行引入我的testNG套件中。当我将“parallel”设置为“tests”时,两个浏览器打开,两个测试的第一个类同时开始--这是我所期望的。当我将其设置为“classes”时,我希望第一个测试中的两个类同时开始,但是只有一个浏览器打开,第一个类中的第一个方法执行,然后用第二个类中的第一个方法打开一个新的浏览器,依此类推。谁能告诉我我做错了什么? 下面是我的xml文件:

  • 1.3 新版功能. 默认情况下,Fabric 会默认 顺序 执行所有任务(详细信息参见 Execution strategy ),这篇文档将介绍 Fabric 如何在多个主机上 并行 执行任务,包括 Fabric 参数设置、任务独立的装饰器,以及命令行全局控制。 它是如何运转的 由于 Fabric 1.x 并不是完全线程安全(以及为了更加通用,任务函数之间并不会产生交互),该功能的实现是基于 Py

  • 问题内容: 我有一些正在使用Jenkins运行的自动化测试。 我已经将Jenkins连接到我的GitSwarm,它从我的分支中提取代码, 然后将其执行。 我已经为Jenkins安装了“并行测试作业执行插件”。 在插件中,我指定了要分三批运行的测试 屏幕截图 还有什么我应该指定的吗?我认为我不必这样做,因为 我已经连接到GitSwarm来运行代码。控制台输出似乎 另有说明! 在工作空间C:\ Jen

  • 我使用testNg用于使用java的自动化,我使用从excel获取数据并作为参数传递给测试脚本。 假设我在中有10行数据,我的测试用例将按顺序执行10次,但现在我想并行运行这10个测试,同时使用线程。 这能做到吗?如果是的话,有人能给我一个同样的例子吗?