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()
测试存在于测试资源管理器中,但 运行 命令无效。
查看输出 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()