gpt4 book ai didi

azure-devops - 如何从 Azure Devops 运行 .Net Core 2.1、编译的 MsTest 单元测试程序集?

转载 作者:行者123 更新时间:2023-12-02 04:23:26 25 4
gpt4 key购买 nike

我有一个生成输出的解决方案构建,其中有一个单元测试程序集。

我已经尝试了 VsTest 和 dotnet 测试管道任务来在此程序集中运行测试。我能想到的每一种参数组合都会产生(匿名路径):

无法找到 MyProject\MyTests.deps.json。确保测试项目具有包“Microsoft.NET.Test.Sdk”的 nuget 引用。

它确实引用了 Microsoft.NET.Test.Sdk。我需要做什么才能让它发挥作用?

我试过:

  • dotnet test 只接受 .csproj 并且根本不识别 dll
  • dotnet vstest 生成上述错误消息。我试过/Framework:.NETCoreApp,Version=v2.1 命令行参数,匹配程序集的版本,这没有任何区别
  • 带有和不带有上述参数的 VsTest 任务。再次没有区别。

编辑:我意识到我忽略了在构建工件中包含 *.deps.json 文件。提供这些产生了一个新错误:

无法找到 MyProject\testhost.dll。请发布您的测试项目并重试。

什么?

编辑 #2:我已经在相关的构建管道中发布了 .csproj,并运行后续步骤以将生成的文件夹中的所有内容复制到构建工件。这没有任何区别。

怎么会这么难?

编辑#3:为了更清楚地解释,我想要实现的是在我的发布管道期间运行用 .net 核心程序集编写的 SpecFlow 测试。我无法在构建管道中运行它们,因为它们是对已部署工件进行测试的集成测试,而这些工件直到发布管道结束时才被部署。我不认为我可以做解释的模式 here因为发布的工件是编译后的项目输出,代码不再在范围内。

为什么我不能像 Visual Studio 那样从程序集中运行测试?这些测试在 VS2017 和 VS2019 中运行良好。

最佳答案

你能找到<project>.runtimeconfig.dev.json吗?在您的 specflow 测试工件中。该文件的存在会导致 testhost.dll not found 错误。由于此文件中定义的 ProbingPaths 指向构建主机的位置。测试在发布主机中运行,如 this page 中所述,您可以从您的工件中删除此文件并试一试。

但是我尝试了我的演示项目,但它对我不起作用,因为依赖包在发布机器中不存在。

我按照以下步骤成功运行了我的演示 specflow 测试。希望对您有所帮助。

1,我添加了dotnet push task发布演示项目。

2,并使用Publish build Artifacts将结果工件发布到发布管道的任务。

3,在我的发布管道中。我添加 Vstest 任务来运行测试程序集。演示测试运行成功

enter image description here

enter image description here

enter image description here

关于azure-devops - 如何从 Azure Devops 运行 .Net Core 2.1、编译的 MsTest 单元测试程序集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57607671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com