如何 运行 TFS 发布管道中的 NETCore 集成测试?

How to run NETCore integration tests in the TFS release pipeline?

我们正在将我们的 NetFramework 产品转换为 NETCore。在较旧的 NetFramework 产品中,我们的集成测试作为构建工件发布到 TFS。发布管道获取这些工件,运行s 静默安装,然后 运行s 使用 visual studio 测试构建步骤进行测试。

较新的产品套件现在正在转换其集成测试。它的集成测试程序集是 NETCore 程序集。我注意到我可以使用 vstest.console.exe 运行 这些测试,或者 dotnet 测试(任何一种方式)。我已经手动验证了这一点。但是,我不知道如何在 TFS 发布管道中高效自动地 运行 它们。

让我们从我的 "dotnet test" 问题开始。 "Dotnet test" 想要“.csproj”源,当我手动提供它和 运行 命令提示符下的这个命令时,它似乎需要所有其他源,就好像它正在构建程序集一样。当然,我可以向发布管道提供所有源,但是真的,没有办法避免吗?毕竟,发布管道中没有 "GetSources" 步骤,虽然我肯定可以自己编写,或者将整个源存储库作为构建工件提供,但这似乎 非常 浪费而且似乎是错误的。

另一方面,当我 运行 通过 vstest.console.exe 进行测试时,他们首先通知我缺少在 .deps.json 文件中列出的依赖项。每次我运行测试我"nuget install"他们然后复制运行time文件夹到bin文件夹下,然后重新运行,得到下一个错误,并重复。在 5 次迭代之后,所有缺失的依赖项都在那里,并且测试 运行 并通过。在尝试测试之前,是否有一些自动获取这些缺失依赖项列表并获取所有依赖项的方法 运行?

或者是否有其他方法可以在我缺少的 TFS 发布管道中对 运行 进行 NETCore 集成测试?更简单,还是更直接?

谢谢!

Is there some automatic means of getting a list of these missing dependencies and getting them all before attempting the test run?

AFAIK,对于发布管道中的 运行 .NET Core 测试,我们可以在构建管道的末尾添加一个 Publish Build Artifacts task 以将包含测试项目的文件夹发布到工件中并制作发布管道拿起已发布的神器。

然后在发布管道中添加两个 .NET Core 步骤:

  • 命令:还原,路径:test.csproj
  • 的路径
  • 命令:测试,路径:test.csproj 的路径,参数:--no-build -c 发布

检查 this thread 了解一些细节。

更新:

SteveSims 在评论中指出:

sub-links提供给我的关键我没看懂的地方是有一个"dotnet publish"命令解决了缺失的依赖。因此,在构建管道中,在我将二进制文件附加为工件之前,我对那个文件夹进行了 dotnet 发布。塔达!出现了必要的 运行times 文件夹,它被打包并附加为供发布管道使用的工件。

希望对您有所帮助。