【问题标题】:Unit tests slow execution on build server单元测试在构建服务器上执行缓慢
【发布时间】:2019-05-15 16:38:22
【问题描述】:

我有一个 .NET 解决方案,其中包含一些作为 nuget 包发布的 Service Fabric 库项目 (.NET Standard 2.0)。解决方案 (.NET Core 2.0) 中的单元测试项目正在使用 xUnit。

我注意到测试在构建服务器上运行时花费了太多时间,与以前的构建相比

我尝试使用 Reshaper/Visual Studio 或 powershell 脚本在本地机器上运行测试,结果不到 5 分钟:

$stopwatch = [system.diagnostics.stopwatch]::StartNew()

Get-ChildItem -recurse *tests.csproj | % { 
    dotnet test $_.FullName --no-build --no-restore;
}

$stopwatch.Stop()
Write-Host $stopwatch.Elapsed

但在 Azure Devops 中,单元测试任务需要超过 27 分钟才能完成!!!

这是构建管道/单元测试任务:

知道发生了什么吗?

【问题讨论】:

  • 这是您本地机器上的 PS 与构建机器上的构建任务的比较/还是构建机器上的 PS?
  • 我在本地机器上运行了 powershell 脚本。我也会在构建服务器上尝试使用 Powershell 任务
  • 我认为这太宽泛了。它可能是任何东西,从“构建服务器的负载太大”,到做一些与 IO 相关的事情的测试,这在那台机器上是完全不同的。我首先会尝试获取每个测试的统计数据,然后开始比较它们。如果只有一些测试用例慢得多,或者如果它们被允许以相同的方式减慢。
  • @GhostCat 其他构建代理也会出现同样的问题。与在我的机器上运行相比,所有测试似乎都比较慢。我看不出其他任务有什么不同,例如恢复 nuget 包或构建解决方案
  • 虽然我同意@GhostCat - 我在这方面的 2 美分,但构建机器的规格通常低于您的开发机器。只是一个随机的想法-您是否尝试过使用 XUnit 以外的东西?为什么不使用默认的 VisualStudio 测试工具和库?设置 XUnit 可能是另一个开销。

标签: unit-testing .net-core azure-devops azure-service-fabric xunit


【解决方案1】:

Regression: dotnet test hangs for 15 minutes after test run completed on mac and linux找到解决方案。

将以下参数添加到 dotnet build 任务的参数就可以了:

-nodereuse:false

顺便说一句,构建代理是 Windows 机器,而不是上面问题中提到的 mac 或 linux。

【讨论】:

    猜你喜欢
    • 2021-11-10
    • 2018-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    • 2013-10-13
    • 2011-10-05
    • 1970-01-01
    相关资源
    最近更新 更多