NUnit 无法加载 MSTestAdapter/MSTestFramework 个 DLL 和 "couldnt find any tests"

NUnit failed to load MSTestAdapter/MSTestFramework DLLs and "couldnt find any tests"

我正在使用 NUnit 进行单元测试,我想将它集成到 azure devops 中。 当我 运行 使用测试资源管理器在视觉工作室中进行本地测试时, 测试能够 运行 正确无误。

然而,当我在 azure devops 上构建它时,我遇到了 NUnit 无法加载 MSTestAdapter 和 MSTestFramework Dll 或无法找到 MSTestAdapter/MSTestFramework dll 的问题。

最初当我浏览时,我认为这是因为我的处理器架构没有 match.Thus 我试图创建一个 运行settings 文件并将测试平台更改为 x64 以便 NUnit 匹配测试。 然而,它仍然没有工作,并给了我同样的错误信息(将在下面显示)

我试过的 Runsettings 文件中的代码:

    ```` <RunSettings>
     ````<!-- Configurations that affect the Test Framework -->
     ```` <RunConfiguration>
        ````<TargetPlatform>x64</TargetPlatform>
     ````   <TargetFrameWorkVersion>Framework45</TargetFrameWorkVersion>
     ```` </RunConfiguration>
    ```` </RunSettings>


Just a part of the error messages
The error message is what i get at the VSTest part in azure devops when i build my project

(the messages are all similar) :

Multiple versions of same extension found. Selecting the highest version.
  Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter : 14.0.2505.1
Input string was not in a correct format.
Could not load type 'Microsoft.VisualStudio.TestTools.UnitTesting.ExecutionScope' from assembly 'Microsoft.VisualStudio.TestPlatform.TestFramework, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
Could not load type 'Microsoft.VisualStudio.TestTools.UnitTesting.ExecutionScope' from assembly 'Microsoft.VisualStudio.TestPlatform.TestFramework, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
Unable to load types from the test source 'd:\a\s\MSTest.TestAdapter.1.3.2\build\_common\Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.dll'. Some or all of the tests in this source may not be discovered.
Input string was not in a correct format.
Unable to load types from the test source 'd:\a\s\MSTest.TestAdapter.1.3.2\build\uap10.0\Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.dll'. Some or all of the tests in this source may not be discovered.
Input string was not in a correct format.
NUnit Adapter 3.12.0.0: Test execution started
Running all tests in d:\a\s\HeyX.UnitTest\bin\Debug\Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.Interface.dll
   NUnit failed to load d:\a\s\HeyX.UnitTest\bin\Debug\Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.Interface.dll
Running all tests in d:\a\s\HeyX.UnitTest\bin\Debug\Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.dll
   NUnit couldn't find any tests in d:\a\s\HeyX.UnitTest\bin\Debug\Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.dll
Running all tests in d:\a\s\HeyX.UnitTest\bin\Debug\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll
   NUnit couldn't find any tests in d:\a\s\HeyX.UnitTest\bin\Debug\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll

NUnit项目的框架版本和visual studio版本是什么?

在"visual studio test"任务中,您可以selectvisual studio版本。

可能是NUnit Project的版本高于任务的版本。

如果是这种情况,您可以指定 vstestconsole 的路径。

错误指示“无法从程序集‘Microsoft.VisualStudio.TestPlatform.TestFramework、版本=14.0.0.0 …加载类型 'Microsoft.VisualStudio.TestTools.UnitTesting.ExecutionScope'”

因为 'Microsoft.VisualStudio.TestTools.UnitTesting.ExecutionScope' 仅适用于 MSTest.TestFrameWork.1.3.2 或更高版本。您的测试项目可能引用了错误的程序集。

包 MSTest.TestAdapter.1.3.2 和包 Microsoft.VisualStudio.TestPlatform.14.0.0 都有 Microsoft.VisualStudio.TestPlatform.TestFramework 程序集。但只有包 MSTest.TestAdapter.1.3.2 中的那个有 'Microsoft.VisualStudio.TestTools.UnitTesting.ExecutionScope

您可以尝试将“Microsoft.VisualStudio.TestPlatform.TestFramework”引用指向测试 csproj 文件中 MSTest.TestFramework.1.3.2 所在的文件夹。

在我自己的 .net 框架测试项目中,我更改了位于标签 "reference Microsoft.VisualStudio.TestPlatform.TestFramework….." 下的标签 "HintPath" 的值,如下所示:

<Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> 
 <HintPath>..\packages\MSTest.TestFramework.1.3.2\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll</HintPath>
 </Reference>
 <Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">        
<HintPath>..\packages\MSTest.TestFramework.1.3.2\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll</HintPath>
 </Reference>

显然我的视觉工作室出了点问题。不太确定我的 vs 的哪一部分影响了我的测试,但是在重新安装 vs 并从头开始构建之后,我能够在 devops 上构建而没有任何错误。