【发布时间】: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