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