단일 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.Sdk
nuget 패키지 관리자에서 패키지를 설치하면 문제가 해결되었습니다.
답변
클래스 라이브러리를 만들고 그 안에 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 또는 기타로 변경하십시오.