UPDATE: Hinzufügen eines 2019; Der Discovery / Runner-Integrationsmechanismus ist derselbe wie in den Jahren 2017 und 2015, daher sind die wichtigsten Dinge, die schief gehen können, dieselben.
Ich habe gelesen, warum der xUnit-Läufer meine Tests nicht findet. Dies deckt Gründe ab, warum xUnit Ihre Tests niemals finden könnte, aber mein Problem ist anders - ich bin zuversichtlich, dass bei meinen Tests nichts Feines vor sich geht. (Sie haben in anderen Umgebungen gearbeitet, dies scheint nur mein Computer zu sein.) - Der Visual Studio-Testläufer in Visual Studio 2015 [Community Edition] zeigt einfach keinen meiner Tests an. Ich mache nichts entfernt Aufregendes; Die Tests zielen auf xUnit.net v2 auf dem Desktop ab.
Ich habe im Ausgabefenster nachgesehen und sehe unter " Test in der Ausgabe von Registerkarten anzeigen" überhaupt nichts .
quelle
Antworten:
Beseitigen Sie Entdeckungsausnahmen aus Ihren Anfragen. Gehen Sie zum Ausgabefenster (Strg-Alt-O), schalten Sie die Show-Ausgabe von Dropdown (Umschalt-Alt-S) auf Tests und stellen Sie sicher, dass keine Erkennungsausnahmen vorliegen
Test | Testeinstellungen | Die Standardprozessorarchitektur kann hilfreich sein, wenn Ihre Tests x86 / x64-spezifisch sind und die Erkennung Ausnahmen im Zusammenhang mit Bittedness auslöst, dh keine AnyCpu
Wie in dieser Antwort vorgeschlagen (verbessern Sie es, wenn die Technik hilft) , kann das Ausführen des Desktop Console Runner ( Anweisungen ) eine gute Gegenprüfung sein, um andere Möglichkeiten auszuschließen, z. B. verstümmelte Konfigurationsdateien: -
HINWEIS Das
xunit.runner.console
Paket ist veraltet. Wenn Sie Dinge in VS zumdotnet test
Laufen bringen , können Sie sie auch in CI-Kontexten ausführenLesen Sie die Dokumentation - sie ist umfassend, aktuell, enthält Informationen zur Fehlerbehebung und erfordert PRs: -
Die folgenden Schritte haben bei mir funktioniert:
(Nur wenn Sie den Verdacht haben, dass auf Ihrem Computer ein ernstes Durcheinander vorliegt - im Allgemeinen ist der häufigere Fall, dass die Visual Studio-Integration einfach noch nicht installiert ist.)
Gehen Sie
DEL %TEMP%\VisualStudioTestExplorerExtensions
wie empfohlen vor:PS> del $env:TEMP\VisualStudioTestExplorerExtensions
Installieren Sie das NuGet-Paket
xunit.runner.visualstudio
in allen TestprojektenPaket:
Sie müssen am Ende Folgendes in Ihrem haben
paket.dependencies
:nuget xunit.runner.visualstudio version_in_path: true
Beachten Sie, dass das
version_in_path: true
Bit wichtig istNuget: Gehen Sie zur Package Manager-Konsole (Alt-T, N, O) und
Neu erstellen, um sicherzustellen, dass
xunit.runner
es im Ausgabeverzeichnis landetTest Explorer schließen <- das war das fehlende Bit für mich
Öffnen Sie den Test Explorer erneut (Alt-S, W, T).
Alle Tests ausführen (Strg R, A)
quelle
%TEMP%\VisualStudioTestExplorerExtensions
und Neustarten von VS hat endlich funktioniert!Ich musste die Testeinstellungen ändern, nachdem ich die CPU des Testprojekts auf x64 geändert hatte. Dann wurden die Tests erneut erkannt.
quelle
Keine der oben genannten Lösungen hat bei mir funktioniert (dotnetcore 1.1, VS2017). Folgendes hat das Problem behoben:
Microsoft.TestPlatform.TestHost
Microsoft.NET.Test.Sdk
Diese sind zusätzlich zu diesen Paketen, die ich zuvor installiert habe:
quelle
TestPlatform.TestHost
nur für die Migration von VS 2017 auf VS 2019 benötigt.Installieren Sie das
xunit.runner.visualstudio
Paket für das Testprojektquelle
Befolgen Sie diese Schritte:
MsTest.TestAdapter
undMsTest.TestFramework
dll's
vonnugget package manager
.quelle
%TEMP%\VisualStudioTestExplorerExtensions
musste, die Tests von der Konsole aus ausführen.Ich habe den ganzen Nachmittag damit zu kämpfen, während ich mit einem ASP Core-Projekt und xUnit 2.2.0 gearbeitet habe. Die Lösung für mich war das Hinzufügen eines Verweises auf
Microsoft.DotNet.InternalAbstractions
Ich habe dies herausgefunden, als ich versucht habe, das Testprojekt manuell auszuführen,
dotnet test
was fehlgeschlagen ist, aber gemeldet hat, dassInternalAbstractions
es fehlte. Ich habe diesen Fehler im Testausgabefenster nicht gesehen, als die automatische Erkennung fehlgeschlagen ist. Die einzige Information, die ich im Entdeckungsfenster sah, war ein Rückkehrcode, der mir zu diesem Zeitpunkt nichts bedeutete, aber im Nachhinein wahrscheinlich auf einen Fehler hinwies.quelle
Es ist mir ein paar Mal passiert - wenn ich das Projekt säubere und es erneut erstelle, ist es in der Regel in Ordnung.
quelle
Stellen Sie sicher, dass Ihre Testklasse öffentlich ist .
quelle
Der Grund in meinem Fall war, dass der Ziel-Build zwischen Projekt-Debugger und Test-Runner nicht identisch war. So vereinen Sie diese Elemente:
Nachdem sie identisch sind, erstellen Sie Ihre Lösung neu. Anschließend werden Testmethoden für Sie angezeigt.
quelle
Nachdem ich 2 Tage verbracht habe ... hat keines der oben genannten für mich funktioniert. Die einzige "Lösung" war: Gehen Sie zu Projekteigenschaften -> Registerkarte Erstellen. Klicken Sie dann in der rechten unteren Ecke des Fensters auf die Schaltfläche Erweitert. Ändern Sie "Debug Info:" in "full" und klicken Sie auf OK.
Hier sind die Screenshots:
quelle
Ich benutze xUnit 2.2.0.
Mein Problem war, dass meine Lösung bestimmte DLLs nicht finden konnte und
app.config
versuchte, sie zu lösen. Der Fehler wurde im Testausgabefenster in Visual Studio nicht angezeigt.Ich konnte den Fehler bei der Installation identifizieren
xunit.runner.console
und versuchte, die Tests über die Befehlszeile auszuführen.Ausführen von xunit-Tests in CLI .
quelle
Ich kann eine Lösung für einen Randfall anbieten, auf den ich vor einigen Tagen gestoßen bin. Es wird jedoch nicht die Lösung sein, die zu allen oben beschriebenen Szenarien passt, für den Randfall, den ich behoben habe.
Ich hatte das gleiche Problem mit dem neuesten VS 2017 (Version 15.5.7) und XUnit 2.3.1. Das Paket xunit.runner.visualstudio wurde installiert. Die Tests wurden jedoch nicht im integrierten Test-Explorer von VisualStudio angezeigt.
Ich habe an einem Legacy-Projekt gearbeitet, das auf .NET Framework 4.5 abzielte. Beginnend mit Version 2.2. XUnit unterstützt keine .NET-Frameworks unter 4.5.2 (siehe Versionshinweise - XUnit 2.2: 19. Februar 2017)
Das Ändern des Zielframeworks des Testprojekts auf eine Version> = 4.5.2 hat bei mir funktioniert. Sie müssen die zu testende Projektversion nicht ändern, es geht nur um das Testprojekt selbst.
quelle
Ich hatte das gleiche Problem mit Visual Studio 2019. Ich habe gerade die folgenden NuGet-Pakete installiert und das Problem wurde behoben.
1). xEinheit
2). xunit.runner.visualstudio
3). Microsoft.TestPlatform.TestHost
4). Microsoft.NET.Test.Sdk
quelle
Dies kann auch daran liegen, dass das Kontrollkästchen Build für das aktuelle Plattformprojekt in der Build-Konfiguration nicht aktiviert ist. Klicken Sie auf Erstellen | Stellen Sie dann sicher, dass die Testprojekte in der Build-Spalte ein Häkchen für die von Ihnen verwendete Plattform haben (z. B. 'x86').
Dies war definitiv die Lösung, die für mich funktioniert hat.
quelle
Stellen Sie sicher, dass Sie Ihre Komponententests nicht in einer .NET Standard 2.0-Klassenbibliothek geschrieben haben. Der Visualstudio Runner unterstützt zum Zeitpunkt dieses Schreibens keine laufenden Tests in Netstandard2.0-Klassenbibliotheken.
Überprüfen Sie hier die Test Runner-Kompatibilitätsmatrix:
https://xunit.github.io/#runners
quelle
Stieß auf ein ähnliches Problem, als VS keine Testmethoden entdeckte. In meinem Fall hatte ich das statische Schlüsselwort mit der Methode, die ich entfernt habe und die funktioniert hat.
quelle
Lass es mich wissen, danke
quelle
In meinem Fall hatte ich 2 verschiedene Testprojekte in der Lösung. Projekt 1-Tests konnten gefunden werden, Projekt 2-Tests jedoch nicht. Ich stellte fest, dass VS zuerst meine Project 2-Tests erkennen konnte, indem er zuerst das Testprojekt 1 entlud, dann VS schloss> meine temporären Dateien löschte> Lösung erneut öffnete> neu erstellte.
Ich gehe davon aus, dass zwischen den beiden Testprojekten ein Konflikt besteht, und dies war der schnellste Weg, um mich in wenigen Minuten zum Laufen zu bringen. Die Knicke können später herausgearbeitet werden :).
quelle
Ich hatte lange Zeit unter diesem Problem gelitten.
Ich hatte ungefähr 100 Projekte, verschiedene Versionen wurden auf verschiedenen Servern bereitgestellt.
Das Aktualisieren von xunit von 2.2.0 auf 2.3.1 war keine Lösung, da die Erstellung in 2.3.1 fehlschlug.
Dann habe ich xunit.runner.visualstudio auf 2.3.1 aktualisiert und alles begann gut zu funktionieren. Ich habe diesen Befehl in meiner Paketmanagerkonsole verwendet, um mein Paket xunit.runner.visualstudio zu aktualisieren
quelle
Der häufigste Schuldige für mich war, dass Visual Studio versucht hat, die Tests mit einer anderen Architektur als der getesteten Bibliothek auszuführen. Leider gibt es mehrere Stellen, an denen dies anscheinend schief gehen kann.
Versuchen Sie in VS 2017, eine Datei mit den Ausführungseinstellungen zu erstellen, z. B.
Default.runsettings
in Ihrem Testprojekt. Wenn Ihre Hauptbibliothek x64 ist, sollte der Inhalt sein:Wählen Sie dann diese Datei unter Test -> Testeinstellungen -> Testeinstellungsdatei auswählen.
Wählen Sie dann unter Test -> Testeinstellungen, Standardprozessorarchitektur erneut die richtige Architektur aus.
Stellen Sie sicher, dass Sie die gesamte Lösung reinigen und erstellen. Möglicherweise müssen Sie das Fenster Test Explorer schließen und erneut öffnen. Suchen Sie im Fenster Ausgabe -> Test nach zusätzlichen Fehlern, um weitere Hinweise auf falsche Architekturtypen zu erhalten.
Weitere Einträge zu Testeinstellungen finden Sie hier .
quelle
Es gibt einen weiteren Grund, der dazu führen kann, dass im Test Explorer keine Tests angezeigt werden. Dies hängt mit dem neuen tragbaren
.pdb
Dateiformat zusammen, das mit Visual Studio 2017 / für .NET Core eingeführt wurde und einige VS-Tools beschädigen kann. (Hintergrund: Siehe Fehlerbericht "Mono.Cecil verursacht OutOfMemoryException mit neuen .csproj-PDBs" .)Werden Ihre Tests aufgrund des neuen tragbaren
.pdb
Formats (Debug-Symbole) nicht gefunden ?Wenn Sie eine Ausgabe wie die folgende sehen (möglicherweise einmal für jeden Ihrer Tests wiederholt), haben Sie das in dieser Antwort beschriebene Problem:
Wenn ja, gehen Sie folgendermaßen vor, um das Problem zu beheben:
none
,pdb-only
oderfull
aber nichtportable
. Diese letzte Einstellung führt dazu, dass die Tests nicht gefunden werden..pdb
Dateien, bevor Sie sie neu erstellen. Jetzt sollten Ihre Tests zurück sein.quelle
Zufällig, als ich meine ersten ersten Gehversuche mit IntelliTest in VS 2017 unternahm.
Wenn das Testprojekt automatisch von IntelliTest erstellt wird, verweist die Assembly manchmal auf
Microsoft.ExtendedReflection
( ... \ Programme (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ Common7 \ IDE \ Extensions \ Microsoft \ Pex \ Microsoft.ExtendedReflection. dll ) fehlt. Nach dem erneuten Kompilieren werden die generierten Tests im Test-Explorer angezeigt.quelle
Haftungsausschluss: Es geht nicht um xunit mit Visual Studio 2015, sondern um Visual Studio 2017 mit einer UWP-Unit-Test-Anwendung (MSTest). Ich bin zu diesem Thread gekommen und habe das Gleiche gesucht, also wird vielleicht jemand anderes das Gleiche tun :)
Die Lösung für mich bestand darin, die Nuget-Pakete für MSTest.TestAdapter und MSTest.TestFramework zu aktualisieren. Es scheint, dass Sie beim Erstellen einer Unit-Test-App für UWP nicht automatisch die neuesten Versionen erhalten.
quelle
Mein Problem wurde durch die Installation des Nugets xunit.runner.visualstudio behoben
quelle
In meinem Fall habe ich mehrere Testprojekte in derselben Lösung, und nur eines der Projekte zeigte nicht den "Test Explorer" an.
Ich ging zum "Nuget-Paket für Lösung verwalten", indem ich mit der rechten Maustaste auf die Lösung klickte.
Ich habe festgestellt, dass auf der Registerkarte "Konsolidieren" einige "Test" -Nuget-Pakete vorhanden waren, die zwischen den Projekten nicht synchron waren. Ich klickte auf "Installieren" und meine fehlenden Tests wurden angezeigt.
quelle
Ich habe die meisten der oben genannten Vorschläge ausprobiert und nichts hat funktioniert. In meinem Fall bin ich in einem Team und es wurden Tests für andere Entwickler für dieselbe Lösung angezeigt. Also habe ich versucht, nur meinen .vs-Ordner zu löschen, aber auch dort kein Glück.
Am Ende habe ich meinen lokalen Ordner vollständig gelöscht und das Repo neu geklont. Das hat es für mich gelöst.
quelle
Hier ist die Lösung, die für uns funktioniert hat. Nicht das Beste, aber vielleicht kann man davon profitieren.
Hintergrund:
Beim Erstellen wird folgende Meldung angezeigt:
Lösung (vorübergehend):
Nun werden die Tests angezeigt.
quelle
xUnit v2 tests
zum Titel passt .Überprüfen Sie auch, ob sich eine vollständig leere app.config-Datei (vollständig leer ohne Markup) im Testprojekt befindet. Dies war der Schuldige in meinem Fall.
quelle
In meinem Fall habe ich eine neue "Lösungskonfiguration" erstellt, wie im Bild gezeigt. Wenn ich also meine benutzerdefinierte als "Prod" auswähle, erkennt sie TestMehods aus irgendeinem Grund nicht. Ein Wechsel zurück zu "Debug" löst das Problem
quelle
Ich weiß nicht, ob einige von Ihnen auch JustMock verwenden, aber ich musste den Profiler in VS 2017 deaktivieren, damit die Testerkennung funktioniert.
quelle