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

JUnit 5并行测试执行会丢失测试输出

滑乐逸
2023-03-14

我们用Rest Assured和JUnit 5编写了API测试,并试图并行运行测试,因为测试之间没有依赖关系。我们已经尝试了JUnit 5的实验性并行执行,方法是设置:

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

…但我们已经看到,通常当测试失败时,测试报告中不包含它们的输出。

这是已知问题吗?有什么变通方法吗?

共有1个答案

宰父衡
2023-03-14

事实证明,问题可能实际上与gradle对测试输出的处理有关。在我们的例子中,我们通过在gradle而不是Junit中使用并行化来解决这个问题,方法是将其添加到我们的gradle测试任务中:

    forkEvery 1
    maxParallelForks 20

我不确定maxParallelForks的最佳价值是什么。20只是我们开始的,如果需要,会调整。Gradle 文档建议根据处理器的数量进行设置。(另请参阅此 SO 问题)

maxParallelForks = Runtime.runtime.availableProcessors().intdiv(2) ?: 1

此外,Gradle docs明确警告不要将< code>forkEvery设置为< code>1,并声称它“非常昂贵”。在我们的情况下,它工作得很好,但这可能是因为这个项目在Gradle中只有一个最小的设置。

要查看的一些相关链接:

  • 来自一个测试类的日志显示在 Gradle 测试报告中另一个类的标准输出部分中
  • https://discuss.gradle.org/t/testng-results-overwritten-when-running-in-parallel/7530
  • https://discuss.gradle.org/t/parallel-tests-in-subprojects/34978/9
  • 使用 gradle 运行并行测试任务
  • https://discuss.gradle.org/t/relationship-between-forkevery-maxparallelfork-and-parallel/25126
 类似资料:
  • 有4个类包含测试< code>TestClass1、TestClasss2、TestClass3、TestClass4。您需要创建2个测试套件,每个套件将包含2个类,并使用< code>Maven surefire插件并行运行它们。 我创建了两个包含以下内容的xml文件: 和 也添加到: 接下来,我用命令< code>mvn clean test运行项目,项目将要运行,但是测试没有开始。我哪里错了

  • 22.13.1.执行测试 测试从main构建过程中分离出来的,运行在一个单独的JVM中执行.Test任务允许控制这些如何发生. 有许多属性用于控制测试过程如何启动.这包括使用诸如系统属性,JVM参数和Java可执行文件。 可以指定是否要并行执行测试.Gradle通过同时运行多个测试进程提供并行执行测试.每个测试进程在同一时间只能执行一个测试,为了充分利用这一特性,一般不需要为tests任务做什么特

  • 右键点击Run可以很好地工作。我用 Intellijidea 2017.1.5, Gradle, JunitPlatformVersion='1.0.0-M6', JunitJupiterVersion='5.0.0-M6'

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

  • 我发现Junit5从5.3版本开始就支持并行性,但我找不到任何关于如何使用csv源代码运行并行测试的参考。你有什么建议吗?

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