У меня есть простая библиотека основных классов 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);
}
}
}
Если я войду в проект через интерфейс командной строки и наберу dotnet build
проект builds. Если я напечатаю, 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 также не отображает тесты в своем обозревателе тестов.
c#
unit-testing
.net-core
xunit.net
Мэтт В
источник
источник
Ответы:
В моем случае проблема заключалась в том, что я ориентировался на .NET Core 2.0, и переход на .NET Core 2.1 решил проблему. Однако я использовал Microsoft.NET.Test.SDK v16.4.0 вместо 15.9.0.
источник
Установка
Microsoft.NET.Test.Sdk
пакета из диспетчера пакетов nuget решила мою проблему.источник
xunit
,xunit.runner.visualstudio
иMicrosoft.NET.Test.Sdk
в проект все тот же результат. Я думаю, здесь есть еще один фактор ...netstandard2.0
проекта вместоnetcoreapp2.2
проекта. Как только я перешел на последнее, все заработало. Единственные пакеты nuget, которые мне были нужныxunit
, - этоxunit.runner.visualstudio
иMicrosoft.NET.Test.Sdk
.dotnet clean
Я создал библиотеку классов и попытался использовать в ней пакет XUnit NuGet.
Я должен был создать проект XUnit с помощью этой команды:
dotnet new xunit -n TestProject
Я нашел эту полезную страницу .
источник
--force
чтобы заставить его перестроить проект как тестовый проект xUnit. Согласно комментарию @Manfred, вам необходимо обновить / повторно добавить любые ссылки на проекты, которые у вас были в этом проекте.xunit.runner.visualstudio
что вы можете найти на nuget.org/packages/xunit.runner.visualstudioВ моем случае проблема заключалась в том, что у меня есть проект расширения для xunit. Также существует тестовый проект для тестирования расширений. Когда я запускал
dotnet test
свое решение, мой проект расширения также был выбран как проект модульного тестирования (мне потребовалось некоторое время, чтобы осознать это). Причина в том, что он ссылается на некоторые пакеты xunit. Один из этих пакетов xunit автоматически устанавливает<IsTestProject>true</IsTestProject>
свойство в вашем файле csprj. На самом деле это хорошо, поскольку 99,99% проектов, которые ссылаются на xunit, на самом деле являются модульными тестами. Я наконец смог решить эту проблему, явно установив<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 или другие.
источник
Я сталкивался с этим пару раз и всегда забываю, что случилось. Совсем недавно у меня было:
Пакеты для моего тестового проекта:
Я видел:
И все, что мне нужно было сделать, это добавить в мой тестовый проект отсутствующий пакет nuget: "Microsoft.NET.Test.SDK"
К этому моменту все вернулось к норме.
источник
Я обнаружил очень интересную проблему совместимости с версией. Я обновил свой код, как обычно, и перешел на xUnit.runner.visualstudio 2.4.2. Он перестал работать для .Net Core 3.1. Мне пришлось перейти на версию 2.4.1, и она снова заработала.
источник
Я создавал тестовый проект netcoreapp2.2, а затем пытался запустить его
dotnet vstest
из папки bin. Я заметил, что тестовые библиотеки Microsoft из:<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.0.1" />
не выводились в мою папку bin. Вместо того, чтобы просто создавать, я запустил публикацию, которая включила необходимые библиотеки DLL в выходную папку, и я смог запустить
dotnet vstest
оттуда.источник
Если вы ориентируетесь на netstandard2.0, это не сработает. Если вы используете .NET Core. убедитесь, что .csproj содержит следующие строки:
<TargetFramework>netcoreapp3.0</TargetFramework>
а также содержит пакет
Microsoft.NET.Test.Sdk
источник
та же проблема, с которой я столкнулся для проекта Nunit (.net core 3.1). Я использовал Microsoft.NET.Test.SDK v16.6.1, я понизил версию до 15.9.0. И он начинает работать
источник
В этой ошибке основная причина заключалась в том, что тесты достигли максимальной длины для пути Windows (MAX_PATH), который определен как 260 символов.
источник
Если вы запускаете проект путем клонирования, то Решением является установка Microsoft.NET.Test.Sdk. Как: Инструменты> Диспетчер пакетов Nuget> Управление пакетами Nuget для решения ...> Найдите Microsoft.NET.Test.Sdk и установите его для своего тестового проекта.
источник
Это также может быть вызвано непреднамеренной попыткой запустить не тестовый проект, обычно это происходит, когда ваш фильтр тестовых файлов слишком широк.
источник
Получил эту ошибку при попытке отладки модульного теста. Ниже приведены шаги, которые я пробовал.
Ура!!! это сработало :-) Не упустите возможность попробовать последний шаг ;-) Надеюсь, это поможет кому-то вроде меня.
источник