Ich habe eine einfache Dotnet-Kernklassenbibliothek mit einer einzigen XUnit-Testmethode:
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);
}
}
}
Wenn ich das Projekt über die CLI eingebe und dotnet build
die Projekterstellung eingebe. Wenn ich tippe, dotnet test
bekomme ich folgendes:
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.
Was muss ich ändern, damit der Test ausgeführt wird?
Wenn dies hilft, zeigt VS Code die Tests auch nicht in seinem Test-Explorer an.
c#
unit-testing
.net-core
xunit.net
Matt W.
quelle
quelle
Antworten:
In meinem Fall bestand das Problem darin, dass ich auf .NET Core 2.0 abzielte und das Wechseln zu .NET Core 2.1 das Problem löste. Ich habe jedoch Microsoft.NET.Test.SDK v16.4.0 anstelle von 15.9.0 verwendet.
quelle
Das Installieren des
Microsoft.NET.Test.Sdk
Pakets vom Nuget Package Manager hat mein Problem behoben.quelle
xunit
,xunit.runner.visualstudio
undMicrosoft.NET.Test.Sdk
zum Projekt immer noch das gleiche Ergebnis. Ich denke, es gibt noch einen weiteren Faktor im Spiel ...netstandard2.0
Projekts anstelle einesnetcoreapp2.2
Projekts verursacht. Sobald ich zu letzterem wechselte, funktionierte es. Die einzigen nuget Pakete ich brauchte warenxunit
,xunit.runner.visualstudio
undMicrosoft.NET.Test.Sdk
.dotnet clean
Ich hatte eine Klassenbibliothek erstellt und versucht, das XUnit NuGet-Paket darin zu verwenden.
Was ich hätte tun sollen, war ein XUnit-Projekt mit diesem Befehl zu erstellen:
dotnet new xunit -n TestProject
Ich habe diese hilfreiche Seite gefunden .
quelle
--force
zu erzwingen, dass das Projekt als xUnit-Testprojekt neu erstellt wird. Gemäß dem Kommentar von @ Manfred müssen Sie alle Projektreferenzen, die Sie in diesem Projekt hatten, aktualisieren / erneut hinzufügen.xunit.runner.visualstudio
was Sie unter nuget.org/packages/xunit.runner.visualstudioIn meinem Fall war das Problem, dass ich ein Erweiterungsprojekt für xunit habe. Es gibt auch ein Testprojekt zum Testen der Erweiterungen. Als ich
dotnet test
meine Lösung ausführte, wurde mein Erweiterungsprojekt auch als Unit-Test-Projekt aufgenommen (es dauerte einige Zeit, bis ich dies realisierte). Der Grund dafür ist, dass es auf einige xunit-Pakete verweist. Eines dieser xunit-Pakete legt die<IsTestProject>true</IsTestProject>
Eigenschaft in Ihrer csprj-Datei automatisch fest. Dies ist eigentlich eine gute Sache, da 99,99% der Projekte, die auf xunit verweisen, tatsächlich Unit-Tests sind. Ich könnte dies endlich lösen, indem ich es explizit einstelle<PropertyGroup> ... <IsTestProject>false</IsTestProject> ... </PropertyGroup>
Manuell in meiner csproj-Datei. Dann ging das Problem weg.
quelle
Dies geschah mir nach dem Update von Microsoft.NET.Test.Sdk von v16.2.0 auf v16.4.0 mit
<TargetFramework>netcoreapp2.0</TargetFramework>
. Aktualisierung,<TargetFramework>netcoreapp3.0</TargetFramework>
um das Problem für mich zu beheben.quelle
Es wurde durch Installation behoben
xunit.runner.visualstudio
.quelle
Wenn Sie xUnit verwenden, stellen Sie sicher, dass Ihr Projekttyp nicht so netstanderd ist. Da xUnit netstanderd nicht unterstützt , ändern Sie es in coreapp2.0 oder andere.
quelle
Ich bin dem schon ein paar Mal begegnet und vergesse immer, was los ist. Zuletzt hatte ich:
Pakete für mein Testprojekt:
Ich habe gesehen:
Und alles, was ich tun musste, war meinem Testprojekt das fehlende Nuget-Paket hinzuzufügen: "Microsoft.NET.Test.SDK"
Zu diesem Zeitpunkt war alles wieder normal.
quelle
Ich habe ein sehr interessantes Kompatibilitätsproblem mit einer Version gefunden. Ich habe mein Code wie gewohnt aktualisiert und zu xUnit.runner.visualstudio 2.4.2 gewechselt. Es funktionierte nicht mehr für .Net Core 3.1. Ich musste auf 2.4.1 downgraden und es fing wieder an zu funktionieren.
quelle
Ich habe ein netcoreapp2.2-Testprojekt erstellt und dann versucht, es
dotnet vstest
aus dem bin-Ordner auszuführen . Ich habe festgestellt, dass die Microsoft Test DLLs von:<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.0.1" />
wurden nicht in meinen bin-Ordner ausgegeben. Anstatt nur zu erstellen, habe ich stattdessen eine Veröffentlichung ausgeführt, die die erforderlichen DLLs im Ausgabeordner enthielt, und konnte dann
dotnet vstest
von dort aus ausführen .quelle
Wenn Sie auf netstandard2.0 abzielen, funktioniert dies nicht. Wenn Sie .NET Core verwenden. Stellen Sie sicher, dass die .csproj die folgenden Zeilen enthält:
<TargetFramework>netcoreapp3.0</TargetFramework>
und enthält auch das Paket
Microsoft.NET.Test.Sdk
quelle
Das gleiche Problem, mit dem ich beim Nunit-Projekt (.net Core 3.1) konfrontiert war. Ich habe Microsoft.NET.Test.SDK v16.6.1 verwendet und die Version auf 15.9.0 heruntergestuft. Und es fängt an zu arbeiten
quelle
Bei diesem Fehler war die Hauptursache, dass die Tests die maximale Länge für einen Windows-Pfad (MAX_PATH) erreichten, der als 260 Zeichen definiert ist.
quelle
Wenn Sie ein Projekt durch Klonen ausführen, müssen Sie als Lösung Microsoft.NET.Test.Sdk installieren. Gewusst wie: Tools> Nuget Package Manager> Verwalten von Nuget Packages For Solution ...> Suchen Sie nach Microsoft.NET.Test.Sdk und installieren Sie es für Ihr Testprojekt.
quelle
Dies kann auch durch den versehentlichen Versuch verursacht werden, ein Nicht-Test-Projekt auszuführen. Dies geschieht normalerweise, wenn der Filter für Testdateien zu groß ist.
quelle
Beim Versuch, einen Komponententest zu debuggen, ist dieser Fehler aufgetreten. Unten sind die Schritte, die ich versucht habe.
Yay!!! es hat funktioniert :-) Verpasse nie den letzten Schritt ;-) Hoffe das hilft jemandem wie mir.
quelle