VS Code - 测试资源管理器不再显示任何测试。错误:“无法读取 null 的属性”

问题描述 投票:0回答:1

什么不起作用

在某些时候,测试资源管理器中曾经显示的测试列表现在不再出现。当我尝试刷新列表时,出现错误,表明系统在某处遇到空值。

我有以下设置:

VSCode

Version: 1.70.2 (user setup)
Commit: e4503b30fc78200f846c62cf8091b76ff5547662
Date: 2022-08-16T05:35:13.448Z
Electron: 18.3.5
Chromium: 100.0.4896.160
Node.js: 16.13.2
V8: 10.0.139.17-electron.0
OS: Windows_NT x64 10.0.19044

小部件解决方案设置:

我有一个主项目和一个测试项目,组织如下:

Widgets.Server 项目文件:

这就是项目文件包含的部分内容 - 注意:平台

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>net5.0-windows</TargetFramework>
    <PlatformTarget>AnyCPU</PlatformTarget>
    <IsPackable>true</IsPackable>

这是测试项目文件包含的内容 - 匹配平台:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net5.0-windows</TargetFramework>
    <PlatformTarget>AnyCPU</PlatformTarget>
    <IsPackable>false</IsPackable>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" />
    <PackageReference Include="TagLibSharp" Version="2.2.0" />
    <PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
      <PrivateAssets>all</PrivateAssets>
    </PackageReference>
    <PackageReference Include="coverlet.collector" Version="3.1.2">
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
      <PrivateAssets>all</PrivateAssets>
    </PackageReference>
    <PackageReference Include="Moq" Version="4.17.2" />
    <PackageReference Include="Shouldly" Version="4.0.3" />
    <PackageReference Include="xunit" Version="2.4.1" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\Widgets.Server\Widgets.Server.csproj" />
  </ItemGroup>
  <ItemGroup>
    <None Update="appsettings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
  </ItemGroup>
</Project>

设置.json

在我的 .vscode 文件夹中,它与服务器文件夹位于同一级别,这就是设置文件包含的内容:(就测试项目的路径而言,这是正确的)

{
  "dotnet-test-explorer.testProjectPath": "Widgets.Server.Tests/Widgets.Server.Tests.csproj"
}

无法读取属性错误

手动运行测试

当我打开一个特定的测试类并运行它时,它似乎有效。请看下图:

编辑1

我注意到的另一个行为是,当我第一次打开 VSCOde 时,它会找到所有测试并在底部状态栏列出总数。但有时,当我尝试仅调试一个测试时,我会收到此错误:

Failed to start debugger: "System.InvalidOperationException: The debugger could not be started\r\n   at OmniSharp.DotNetTest.Services.DebugTestService.Handle(DebugTestGetStartInfoRequest request) in D:\\a\\1\\s\\src\\OmniSharp.DotNetTest\\Services\\DebugTestService.cs:line 42\r\n   at OmniSharp.Endpoint.EndpointHandler`2.GetFirstNotEmptyResponseFromHandlers(ExportHandler`2[] handlers, TRequest request) in D:\\a\\1\\s\\src\\OmniSharp.Host\\Endpoint\\EndpointHandler.cs:line 198\r\n   at OmniSharp.Endpoint.EndpointHandler`2.HandleRequestForLanguage(String language, TRequest request, RequestPacket packet) in D:\\a\\1\\s\\src\\OmniSharp.Host\\Endpoint\\EndpointHandler.cs:line 234\r\n   at OmniSharp.Endpoint.EndpointHandler`2.Process(RequestPacket packet, LanguageModel model, JToken requestObject) in D:\\a\\1\\s\\src\\OmniSharp.Host\\Endpoint\\EndpointHandler.cs:line 143\r\n   at OmniSharp.Stdio.Host.HandleRequest(String json, ILogger logger) in D:\\a\\1\\s\\src\\OmniSharp.Stdio\\Host.cs:line 258"

在输出窗口中我看到了这个:

----- Debugging test method Widgets.Server.Tests.FeatureToggleSampleControllerShould.Return_String_If_Toggle_Enabled -----

MSBuild version 17.3.0+92e077650 for .NET

C:\Program Files\dotnet\sdk\6.0.400\Microsoft.Common.CurrentVersion.targets(4809,5): error MSB3021: Unable to copy file "C:\Users\me\.nuget\packages\microsoft.testplatform.objectmodel\17.1.0\lib\netcoreapp2.1\Microsoft.TestPlatform.PlatformAbstractions.dll" to "bin\Debug\net5.0-windows\Microsoft.TestPlatform.PlatformAbstractions.dll". The process cannot access the file 'c:\Users\me\Documents\src\codeReview\widgets\server\Widgets.Server.Tests\bin\Debug\net5.0-windows\Microsoft.TestPlatform.PlatformAbstractions.dll' because it is being used by another process. [c:\Users\me\Documents\src\codeReview\widgets\server\Widgets.Server.Tests\Jw.O3M.Server.Tests.csproj]
    10 Warning(s)
    2 Error(s)

发生这种情况时,我必须删除 Test 项目中的 bin 文件夹,并找到并终止 testhost 进程。 然后我可以通过单击 [Fact] 装饰器下的“运行测试 | 调试测试”选项来运行单个测试

但是测试浏览器仍然是空的。 无论我做什么,我都无法显示测试列表。

unit-testing visual-studio-code test-explorer
1个回答
16
投票

这是测试资源管理器扩展中的一个已知问题,请参阅 https://github.com/formulahendry/vscode-dotnet-test-explorer/issues/370

解决方法是在“平面”树模式视图中显示测试: Screenshot of settings in VSCode

© www.soinside.com 2019 - 2024. All rights reserved.