[c#] testhost.dll을 찾을 수 없습니다. 테스트 프로젝트를 게시하고 다시 시도하십시오.

단일 XUnit 테스트 메서드가있는 간단한 dotnet 코어 클래스 라이브러리가 있습니다.

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는 테스트 탐색기에도 테스트를 표시하지 않습니다.



답변

제 경우 문제는 .NET Core 2.0을 대상으로하고 .NET Core 2.1로 전환하면 문제가 해결된다는 것입니다. 그러나 15.9.0 대신 Microsoft.NET.Test.SDK v16.4.0을 사용하고있었습니다.


답변

Microsoft.NET.Test.Sdknuget 패키지 관리자에서 패키지를 설치하면 문제가 해결되었습니다.


답변

클래스 라이브러리를 만들고 그 안에 XUnit NuGet 패키지를 사용하려고했습니다.

내가해야 할 일은 다음 명령을 사용하여 XUnit 프로젝트를 만드는 것입니다. dotnet new xunit -n TestProject

이 유용한 페이지를 찾았습니다 .


답변

제 경우 문제는 xunit에 대한 확장 프로젝트가 있다는 것입니다. 확장을 테스트하는 테스트 프로젝트도 있습니다. dotnet test솔루션을 실행했을 때 확장 프로젝트도 단위 테스트 프로젝트로 선택되었습니다 (이를 실현하는 데 시간이 좀 걸렸습니다). 그 이유는 일부 xunit 패키지를 참조하기 때문입니다. 이러한 xunit 패키지 중 하나는 <IsTestProject>true</IsTestProject>csprj 파일에 속성을 자동으로 설정 합니다. xunit을 참조하는 프로젝트의 99.99 %가 실제로 단위 테스트이기 때문에 이것은 실제로 좋은 것입니다. 마침내 명시 적으로 설정하여 해결할 수 있습니다.

     <PropertyGroup>
...
        <IsTestProject>false</IsTestProject>
...
      </PropertyGroup>

내 csproj 파일에서 수동으로. 그런 다음 문제가 사라졌습니다.


답변

이는 Microsoft.NET.Test.Sdk를 v16.2.0에서 v16.4.0으로 <TargetFramework>netcoreapp2.0</TargetFramework>. <TargetFramework>netcoreapp3.0</TargetFramework>나를 위해 문제 를 해결하기 위해 업데이트했습니다 .


답변

설치하여 고정 xunit.runner.visualstudio.


답변

xUnit을 사용하는 경우 프로젝트 유형이 netstanderd가 아닌지 확인하십시오. xUnit은 netstanderd를 지원하지 않으므로 coreapp2.0 또는 기타로 변경하십시오.