MS 测试 "Method not found: System.String" 错误

MS Test "Method not found: System.String" Error

最近我的一些 MS Test 单元测试停止工作。我没有改变测试本身的任何内容。我收到的错误如下:

Test Failed - [file name]

Message: Method not found: 'System.String Microsoft.VisualStudio.TestTools.UnitTesting.TestResult.get_TestContextMessages()'.

在 'References' 下,在我的单元测试项目中(在 Visual Studio 中),我有以下内容:

Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter

Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices

Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.Interface

Microsoft.VisualStudio.TestPlatform.TestFramework

Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions

Moq

Ploeh.AutoFixture

Ploeh.AutoFixture.AutoMoq

有人知道这里的问题是什么吗?

您是否也参考了 Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll?我在提到的项目参考中没有看到它。虽然默认情况下在 MS 测试项目中引用此库。

另外,查看测试和目标项目的处理器架构是否相同。可以从菜单 Test->Test Settings->Default Processor Architecture 检查测试的处理器架构。可能需要更改为 x64。

所以问题本质上就是我在上一条评论中描述的问题,即如果您在 Visual Studio 2015 年创建一个新的单元测试项目,它会附带 Microsoft.VisualStudio.QualityTools.UnitTestFramework 已经安装。如果您随后从 NuGet 安装 MSTest.TestFramework,这将是 MSTest 版本 2(这一点很重要),这将为测试属性创建模糊引用问题,例如作为 TestClassTestInitialize,即单元测试项目无法编译。

要解决上述问题,可以从项目中删除 Microsoft.VisualStudio.QualityTools.UnitTestFramework 引用。这使一切正常,我的项目就是这种情况。但是过了一段时间,由于未知原因,我的单元测试项目中的某些内容已损坏,我开始在原始 post 中收到错误。为了解决这个问题,我创建了一个新的单元测试项目,将我所有的单元测试移到其中,添加了一个引用 MSTest.TestFramework 并删除了 Microsoft.VisualStudio.QualityTools.UnitTestFramework.

Here 是一个相关问题。