我正在使用MSTest.TestAdapter和MSTest.TestFramework版本1.2.0进行MS测试单元测试。在我的本地计算机(Visual Studio 2017)上,测试运行完美,但在我们的构建服务器上,我们得到以下消息:
无法加载文件或程序集'Microsoft.VisualStudio.TestPlatform.ObjectModel,Version = 11.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一。系统找不到指定的文件。
然后我用ildasm检查了这个程序集的引用,实际上它是11.0.0.0版本(见下文)
但是我找不到这个程序集的v11,在线只有nuget上的v14版本:https://www.nuget.org/packages/Microsoft.VisualStudio.TestPlatform.ObjectModel/
我也在我的机器上搜索,但找不到v11。
所以我的问题是,为什么测试在我的机器上而不是在构建服务器上运行?
我尝试了装配绑定,但没有成功。
答案 0 :(得分:2)
您需要的NuGet包是由Microsoft创作的Microsoft.TestPlatform.ObjectModel,而不是由Christopher.Haws撰写的Microsoft.VisualStudio.TestPlatform.ObjectModel包。
https://www.nuget.org/packages/microsoft.testplatform.objectmodel/
Microsoft软件包中包含Microsoft.VisualStudio.TestPlatform.ObjectModel程序集,尽管它没有以这种方式命名。我得到了同样的错误,当我安装了Microsoft软件包的v11时,它为我修复了构建服务器上的构建。
答案 1 :(得分:1)
在另一个项目中再次遇到同样的问题之后,我们再次查看了它并找到了解决方案。
Install-Package Microsoft.TestPlatform.ObjectModel -Version 11.0.0
但这还不够,为了确保构建服务器拾取程序集,我们将其作为部署项添加到基础测试类中;
[DeploymentItem("Microsoft.VisualStudio.TestPlatform.ObjectModel.dll")]
现在构建服务器再次进行单元测试: - )
Grtz
答案 2 :(得分:1)
同一问题,我能够安装最新版本:
Install-Package Microsoft.TestPlatform.ObjectModel -Version 15.8.0
然后将绑定重定向添加到测试项目app.config:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.VisualStudio.TestPlatform.ObjectModel" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="11.0.0.0-14.0.0.0" newVersion="15.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
答案 3 :(得分:1)
建议其他解决方法here
不反映来自 “ Microsoft.VisualStudio.TestPlatform.ObjectModel”程序集。 要么 将Microsoft.NET.Test.Sdk降级到15.3.0。
第二种选择可能不适用于您,因为您使用的是.NET Framework而不是.NET Core。
更多背景:
答案 4 :(得分:0)
在将NUnit 3.0的NuGet软件包错误地添加到解决方案中的多个项目后,将其删除后,遇到了相同的错误。
参考没有被完全删除。我必须手动打开每个.csproj文件,并删除对以前删除的NuGet包的所有引用。清理并重建后,错误消失了。
答案 5 :(得分:0)
在测试输出窗口中,我遇到了这样的错误……
[MSTest][Discovery][C:\Repos\Flomaster\bin\Debug\ApiTest.UnitMaintenance.dll] Failed to discover tests from assembly C:\Repos\Flomaster\bin\Debug\ApiTest.UnitMaintenance.dll. Reason:Type 'Microsoft.VisualStudio.TestPlatform.ObjectModel.Trait' in Assembly 'Microsoft.VisualStudio.TestPlatform.ObjectModel, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' is not marked as serializable.
我设法通过清除所有obj
和bin\debug
文件夹来使测试人员正常工作,但是它回来了,所以我看上去更加深入,发现只是搜索Microsoft.VisualStudio.TestPlatform.ObjectModel.dll
并删除任何匹配的文件就足以使测试运行器正常工作