"dotnet test": 如何并行运行xunit测试项目?

24

我正在使用一个命令从解决方案级别运行所有测试项目: dotnet test如何使所有测试项目(程序集)并行运行?

在Visual Studio中有一个简单的按钮"并行运行测试",它可以完美地工作,但我需要使用dotnet core测试命令进行CI。

1个回答

30

目前没有支持的方法来传递标志给dotnet test。 相反,您必须使用配置文件

xunit.runner.json:

{
    "parallelizeAssembly": true
}

parallelizeAssembly 默认为 false

如果该程序集愿意与其他程序集一起参与并行处理,则将其设置为true。测试运行器可以使用此信息,如果所有程序集都同意,则自动启用跨程序集的并行处理。

parallelizeTestCollections 默认为 true

如果该程序集愿意在其中运行测试并使它们相互并行,则将其设置为true。同一个测试集中的测试将按顺序相互运行,但是不同测试集中的测试将相互并行运行。将其设置为false以禁用该测试程序集内的所有并行处理。


谢谢,我之前尝试过这种方法,但错过了“仅复制更新文件”选项。希望它能像Visual Studio中的“并行运行选项”一样高效。 :) - Deivydas Voroneckis
5
请尝试使用以下命令进行测试:dotnet test -- xunit.parallelizeAssembly=true。出处为 https://github.com/Microsoft/vstest/issues/631 - dani herrera
@daniherrera 有没有办法让我轻松地查看到目前为止加载了哪些测试?我发誓这不是按照文档的方式工作。我一个一个手动运行测试,它们都通过了。但是一次性运行所有测试时,它们全部失败了。由于测试不是线程安全的,所以这很合理。我正在使用xunit理论。 - John Zabroski
请注意,如果您正在使用固定测试运行器,则无法并行运行测试(我猜这是一个错误),因此您必须通过在xunit.runner.json文件中设置"maxParallelThreads": -1或通过传递相应的命令行命令来保持单线程。 - Dmitry Pavlov
3
@daniherrera,xunit 没有这样的语法,只支持 xunit.runner.json,请参见 xunit 作者的引用 - M.Hassan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接