我们正在将我们的NetFramework产品转换为NETCore。在较旧的NetFramework产品中,我们的集成测试作为构建工件发布到TFS。发布管道会获得这些工件,并运行静默安装,然后使用Visual Studio测试构建步骤运行测试。
新产品套件现在正在转换其集成测试。它的集成测试程序集是NETCore程序集。我注意到我可以使用vstest.console.exe运行这些测试,也可以通过dotnet测试运行(两种方式)。我已经手动验证了这一点。但是,我对如何在TFS发布管道中高效且自动运行它们感到困惑。
让我们从我的“ dotnet测试”问题开始。 “ Dotnet测试”需要“ .csproj”源,当我手动提供它并从命令提示符运行此命令时,它似乎需要所有其他源,就好像它正在构建程序集一样。当然,我可以将所有源代码提供给发布管道,但是真的,有没有办法避免这种情况?毕竟,发布管道中没有“ GetSources”步骤,尽管我可以肯定地编写自己的代码,也可以将整个源存储库作为构建工件来提供,但这似乎非常浪费并且错了。
另一方面,当我通过vstest.console.exe运行测试时,它们首先通知我.deps.json文件中列出的缺少依赖项。每次运行测试时,我都会“安装”它们,并将运行时文件夹复制到bin文件夹下,然后重新运行,得到下一个错误,然后重复。 5次迭代后,所有缺少的依赖项都在那里,并且测试运行并通过。是否有一些自动的方法来获取这些缺少的依赖项列表,并在尝试测试之前全部获取它们?
或者还有其他方法可以使我缺少的NETCore集成测试在TFS发布管道中运行吗?更简单或更直接?
谢谢!
答案 0 :(得分:0)
是否有一些自动方法来获取这些缺少的依赖项列表,并在尝试测试之前将其全部获取?
AFAIK,要在发布管道中运行.NET Core测试,我们可以在构建管道的末尾添加一个Publish Build Artifacts task,以将包含测试项目的文件夹发布到工件中,并使发布管道拾取已发布的工件。
然后在发布管道中添加两个.NET Core步骤:
检查this thread以获得一些详细信息。
更新:
SteveSims在评论中指出:
我不明白提供给我的子链接的重点是,有一个“ dotnet publish”命令可以解决缺少的依赖关系。因此,在构建管道中,在将二进制文件附加为工件之前,我已将dotnet发布到该文件夹。塔达!出现了必要的运行时文件夹,并将其打包并作为工件供发布管道使用。
希望这会有所帮助。