Visual Studio 2019 年未发现单元测试

Unit tests not discovered in Visual Studio 2019

测试存在于测试资源管理器中,但 运行 命令无效。

查看输出 windows,对于测试输出,它显示许多错误,如下所示:

 MSTestAdapter failed to discover tests in class 'UnitTests.Adhoc' of assembly 'some test.dll' because Method not found: 'System.String Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute.get_DisplayName()'..

发现在引用树节点上有一些程序集冲突没有像往常一样由 visual studio 发出信号。

删除 Microsoft.VisualStudio.TestPlatform.TestFramework 引用并再次添加就成功了。

项目文件的区别:

之前:

<Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
  <HintPath>..\..\packages\MSTest.TestFramework.2.0.0\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.2.0.0\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll</HintPath>
</Reference>

之后:

<Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />

对我来说,其他解决方案并不像我一样有效,例如没有对包 'Microsoft.VisualStudio.TestPlatform.TestFramework' 的引用。事实证明,我的解决方案是将测试项目的目标框架从 .NET Core 2.0 更新到 .NET Core 3.1。更改时一切都像以前一样工作。 我不确定是什么导致了这个问题,但我认为这是三个包的组合。 作为完整参考,这些是我现在与 .NET Core 3.1 一起使用的(带版本):

Microsoft.NET.Test.SDK

MSTest.TestAdapter 2.1.1

MSTest.TestFramework 2.1.1

在 Visual Studio 16.5.2

我的问题是我在一个特定的 class 中进行了无法识别的测试。

原来我剪切并粘贴了一个 TestInitialize 方法,其中包含我没有使用的 TestContext。例如:

[TestInitialize]
public void ClassInitialize(TestContext context)

当我删除未使用的 TestContext 时,我的所有测试都被识别:

[TestInitialize]
public void ClassInitialize()