【问题标题】:How to run NETCore integration tests in the TFS release pipeline?如何在 TFS 发布管道中运行 NETCore 集成测试?
【发布时间】:2019-11-24 14:14:12
【问题描述】:

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

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

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

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

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

谢谢!

【问题讨论】:

  • 事实上,执行“dotnet test”getsources 想法存在问题。在构建完成和发布过程获取源之间,源可以更改。发生这种情况时,测试实际上不会在已构建的源上运行,除非所有源的快照都作为工件发布。

标签: testing tfs integration


【解决方案1】:

是否有一些自动方法可以在尝试运行测试之前获取这些缺失依赖项的列表并全部获取?

AFAIK,要在发布管道中运行 .NET Core 测试,我们可以在构建管道的末尾添加 Publish Build Artifacts task 以将包含测试项目的文件夹发布到工件中,并使发布管道获取已发布的工件。

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

  • 命令:恢复,路径:test.csproj 的路径
  • 命令:测试,路径:test.csproj 的路径,参数:--no-build -c 释放

查看this thread了解一些详细信息。

更新:

SteveSims 在评论中指出:

我不明白提供给我的子链接的关键是有一个“dotnet publish”命令可以解决缺少的依赖项。因此,在构建管道中,在我将二进制文件作为工件附加之前,我做了一个 dotnet 发布到该文件夹​​。塔达!出现了必要的运行时文件夹,它被打包并附加为一个工件供发布管道使用。

希望这会有所帮助。

【讨论】:

  • 谢谢,但正如原帖中提到的,希望发布管道中不需要完整的源代码。没有无缝的 GetSources 管道发布步骤,并且滚动我自己的获取源可能无法保证源与构建的源相同,除非我让构建发布作为工件所需的所有源。 -- 一个相当大的工件包。没有 .csproj 作为参数提供给 dotnet restore 或 dotnet test 命令。
  • 实际上,该线程的链接使我无法找到我错过的明显答案。我会尽快回复,如果解决了,我会相信这个答案。
  • @SteveSims,“没有 .csproj 可以作为 dotnet restore 或 dotnet test 命令的参数提供。”您说的是正确的,我也发布答案后意识到这一点。我会再次调查它。我也期待你的回答。
  • 好的,我将此标记为已接受的答案,但将在此处添加派生的详细信息。我不明白提供给我的子链接的关键是有一个“dotnet publish”命令可以解决缺少的依赖项。因此,在构建管道中,在我将二进制文件作为工件附加之前,我做了一个 dotnet 发布到该文件夹​​。塔达!出现了必要的运行时文件夹,它被打包并附加为一个工件供发布管道使用。
  • 顺便说一句,请随时编辑您的答案以直接包含这些派生的详细信息。它可能对不阅读 cmets 的人有所帮助。很抱歉不知道在原始帖子中提供什么信息。
猜你喜欢
  • 1970-01-01
  • 2017-09-06
  • 2020-01-08
  • 1970-01-01
  • 1970-01-01
  • 2021-05-15
  • 2020-09-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多