我有一个简单的dotnet核心类库和一个XUnit测试方法:

TestLib.csproj:
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.NET.Test.SDK" Version="15.9.0" />
    <PackageReference Include="xunit" Version="2.4.1" />
    <PackageReference Include="xunit.runner.console" Version="2.4.1">
      <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
      <PrivateAssets>all</PrivateAssets>
    </PackageReference>
    <PackageReference Include="xunit.runner.visualstudio" Version="2.4.1">
      <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
      <PrivateAssets>all</PrivateAssets>
    </PackageReference>
    <PackageReference Include="xunit.runners" Version="2.0.0" />
  </ItemGroup>

</Project>

BasicTest.cs:
using Xunit;

namespace TestLib
{
    public class BasicTest
    {
        [Fact(DisplayName = "Basic unit test")]
        [Trait("Category", "unit")]
        public void TestStringHelper()
        {
            var sut = "sut";
            var verify = "sut";

            Assert.Equal(sut, verify);
        }
    }
}

如果我在CLI中输入项目并输入dotnet build,项目就会生成。如果我输入dotnet test,我得到这个:

C:\git\Testing\TestLib> dotnet test
C:\git\Testing\TestLib\TestLib.csproj : warning NU1701: Package 'xunit.runner.visualstudio 2.4.1' was restored using '.NETFramework,Version=v4.6.1' instead of the project target framework '.NETStandard,Version=v2.0'. This package may not be fully compatible with your project.
Build started, please wait...
C:\git\Testing\TestLib\TestLib.csproj : warning NU1701: Package 'xunit.runner.visualstudio 2.4.1' was restored using '.NETFramework,Version=v4.6.1' instead of the project target framework '.NETStandard,Version=v2.0'. This package may not be fully compatible with your project.
Build completed.

Test run for C:\git\Testing\TestLib\bin\Debug\netstandard2.0\TestLib.dll(.NETStandard,Version=v2.0)
Microsoft (R) Test Execution Command Line Tool Version 16.0.0-preview-20181205-02
Copyright (c) Microsoft Corporation.  All rights reserved.

Starting test execution, please wait...
Unable to find C:\git\Testing\TestLib\bin\Debug\netstandard2.0\testhost.dll. Please publish your test project and retry.

Test Run Aborted.

我需要更改哪些内容才能运行测试?

如果有帮助的话,VS Code也没有在它的测试资源管理器中显示测试。


当前回答

遇到此错误,根本原因是测试达到了Windows路径的最大长度(MAX_PATH),其定义为260个字符。

其他回答

从nuget包管理器安装Microsoft.NET.Test.Sdk包解决了我的问题。

我遇到过几次这种情况,我总是忘记发生了什么。最近我有:

类库->针对。net Core 3.0 测试项目->针对。net Core 3.1

我的测试项目包:

Moq -> 4.14.1 2.4.1 . xUnit -> xUnit.Runner.VisualStudio -> 2.4.2

我看到:

无法找到C:\PATH\bin\Debug\netstandard2.0\ testthost .dll请发布测试项目并重试。

我所需要做的就是将缺失的nuget包添加到我的测试项目中: “Microsoft.NET.Test.SDK”

这时一切都恢复了正常。

这也可能是由于无意中试图运行一个非测试项目造成的,这通常发生在你的测试文件过滤器太宽的时候。

我已经创建了一个类库,并尝试在其中使用XUnit NuGet包。

我应该做的是使用以下命令创建一个XUnit项目:dotnet new XUnit -n TestProject

我找到了这个有用的页面。

在我的情况下,Microsoft.NET.Test.Sdk已经安装,我必须在Nuget包管理器上重新安装它,问题得到了解决。