Ответ 1
Я создал библиотеку классов и попытался использовать в ней пакет XUnit NuGet.
Я должен был создать проект XUnit с помощью этой команды: dotnet new xunit -n TestProject
Я нашел эту полезную страницу.
У меня есть простая библиотека классов ядра 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 не отображает тесты в своем тестовом обозревателе.
Я создал библиотеку классов и попытался использовать в ней пакет XUnit NuGet.
Я должен был создать проект XUnit с помощью этой команды: dotnet new xunit -n TestProject
Я нашел эту полезную страницу.
Установка пакета Microsoft.NET.Test.Sdk
из диспетчера пакетов nuget решила мою проблему.
Исправлено установкой xunit.runner.visualstudio
.
В моем случае проблема заключалась в том, что у меня есть проект расширения для xunit. Существует также тестовый проект для тестирования расширений. Когда я запустил dotnet test
для своего решения, мой проект расширения также был выбран как проект модульного тестирования (мне потребовалось некоторое время, чтобы понять это). Причина этого заключается в том, что он ссылается на некоторые пакеты xunit. Один из этих пакетов xunit автоматически устанавливает свойство <IsTestProject>true</IsTestProject>
в вашем файле csprj. Это на самом деле хорошо, так как 99,99% проектов, в которых упоминается xunit, на самом деле являются юнит-тестами. Я мог бы наконец решить это, явно установив
<PropertyGroup>
...
<IsTestProject>false</IsTestProject>
...
</PropertyGroup>
Вручную в моем файле csproj. Тогда проблема ушла.
Эта ошибка возникла из-за того, что тесты достигли максимальной длины пути Windows (MAX_PATH), которая определяется как 260 символов.