it-swarm.com.de

Warum erkennt der Visual Studio 2015/2017/2019 Test Runner meine xUnit v2-Tests nicht?

UPDATE: Hinzufügen eines 2019; Der Discovery/Runner-Integrationsmechanismus ist derselbe wie in den Jahren 2017 und 2015. Die wichtigsten Probleme können also dieselben sein.


Ich habe gelesen, dass Warum findet der xUnit-Runner meine Tests nicht, was die Gründe abdeckt, warum xUnit niemals Ihre Tests finden kann , 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 Test Runner in Visual Studio 2015 [Community Edition] zeigt einfach keine an meiner tests. Ich mache nichts im entferntesten Aufregendes; Die Tests richten sich an xUnit.net v2 auf dem Desktop.

Ich habe in das Ausgabefenster geschaut und sehe überhaupt nichts unter Test in der Ausgabe von Registerkarten.

146
Ruben Bartelink
  1. Beseitigen Sie Entdeckungsausnahmen von Ihren Anfragen. Gehen Sie zum Ausgabefenster (Strg-Alt-O), und ändern Sie die show-Ausgabe von Dropdown (Umschalt-Alt-S) auf Tests, und stellen Sie sicher, dass keine Erkennungsausnahmen vorhanden sind 

  2. Wie in dieser Antwort vorgeschlagen (stimmen Sie zu, wenn die Technik hilft) Das Ausführen des Desktop Console Runner ( Anweisungen ) kann eine gute Gegenprüfung sein, um andere Möglichkeiten zu beseitigen, z. entstellte Konfigurationsdateien: - 

    packages\xunit.runner.console.2.2.0\tools\xunit.console <tests.dll> 

  3. Test | Testeinstellungen | Standardprozessorarchitektur kann hilfreich sein, wenn Ihre Tests x86/x64-spezifisch sind und die Erkennung zu bittingartigen Ausnahmen führt, d. H. Nicht AnyCpu


Go lesen Sie die Dokumentation - es ist umfassend, auf dem neuesten Stand, enthält Informationen zur Fehlerbehebung und nimmt PRs: -

Wichtiger Hinweis: Wenn Sie xUnit.net Visual Studio Runner VSIX (Erweiterung) bereits installiert haben, müssen Sie es zuerst deinstallieren. Der Visual Studio-Läufer wird jetzt nur über NuGet verteilt. Um es zu entfernen, gehen Sie zu Tools> Extensions and Updates. Scrollen Sie zum Ende der Liste und deinstallieren Sie es, wenn xUnit.net installiert ist. Dadurch müssen Sie Visual Studio neu starten.

Wenn beim Erkennen oder Ausführen von Tests Probleme auftreten, sind Sie möglicherweise Opfer eines beschädigten Läufercaches in Visual Studio. Um diesen Cache zu löschen, fahren Sie alle Instanzen von Visual Studio herunter und löschen Sie den Ordner %TEMP%\VisualStudioTestExplorerExtensions. Stellen Sie außerdem sicher, dass Ihr Projekt nur mit einer einzelnen Version des Visual Studio-Runner-NuGet-Pakets (xunit.runner.visualstudio) verknüpft ist.

Die folgenden Schritte haben für mich funktioniert:

  1. (Nur wenn Sie vermuten, dass auf Ihrem Computer ein ernstes Durcheinander herrscht - im Allgemeinen ist es üblicher, dass die Visual Studio-Integration einfach noch nicht installiert ist.) 

    Führen Sie den DEL %TEMP%\VisualStudioTestExplorerExtensions wie empfohlen aus: -

    PS> del $env:TEMP\VisualStudioTestExplorerExtensions

  2. Installieren Sie das NuGet-Paket xunit.runner.visualstudio in allen Testprojekten

    • Paket: 

      .paket\paket add nuget xunit.runner.visualstudio -i
      

      In Ihrem paket.dependencies müssen Sie Folgendes finden:

      nuget xunit.runner.visualstudio version_in_path: true

      Beachten Sie, dass das version_in_path: true-Bit wichtig ist 

    • Nuget: Gehen Sie zu Package Manager Console (Alt-T, N, O) und 

      Install-Package xunit.runner.visualstudio)
      

    Erstellen Sie neu, um sicherzustellen, dass xunit.runner im Ausgabeverzeichnis endet

  3. Schließen Sie den Test Explorer <- das war das fehlende Bit für mich

  4. Test Explorer erneut öffnen (Alt-S, W, T)

  5. Alle Tests ausführen (Ctrl R, A)}

174
Ruben Bartelink

Keine der oben genannten Lösungen funktionierte für mich (dotnetcore 1.1, VS2017). Folgendes wurde behoben:

  1. NuGet-Paket hinzufügen "Microsoft.TestPlatform.TestHost" 
  2. Fügen Sie NuGet Package "Microsoft.NET.Test.Sdk" hinzu.

Das sind zusätzlich zu diesen Paketen, die ich vor installiert habe:

  • xunit (2.3.0-beta1-build3642) 
  • xunit.runner.visualstudio (2.3.0-beta1-build1309)
25
Arman

Ich musste die Testeinstellungen ändern, nachdem ich die CPU des Testprojekts in x64 geändert hatte. Dann wurden die Tests erneut erkannt.

 Architecture

22
Max

Installieren Sie das xunit.runner.visualstudio-Paket für das Testprojekt

16
Chris Aelbrecht

Folge diesen Schritten:

  1. Aktualisieren Sie Ihren MsTest.TestAdapter und MsTest.TestFrameworkdll's aus nugget package manager.
  2. Reinigen Sie Ihre Lösung
  3. Bauen Sie Ihre Lösung auf.
13
Venkat Ramanan

Ich habe den ganzen Nachmittag damit zu kämpfen, während ich mit einem ASP -Kernprojekt 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 versuchte, das Testprojekt manuell mit dotnet test auszuführen, was fehlgeschlagen ist, aber gemeldet wurde, dass InternalAbstractions fehlte. Dieser Fehler wurde im Testausgabefenster nicht angezeigt, als die automatische Erkennung fehlgeschlagen ist. Die einzige Information, die ich im Entdeckerfenster sah, war ein Rückkehrcode, der mir damals nichts bedeutete, aber im Nachhinein wahrscheinlich auf einen Fehler hinwies.

10
Tom Makin

Es ist mir ein paar Mal passiert - wenn ich das Projekt bereinige und erneut baue, ist es in der Regel gut.

7
Liam

Nachdem ich 2 Tage verbracht hatte ... funktionierte nichts von mir. Die einzige "Lösung" war: Gehen Sie zu Projekteigenschaften -> Registerkarte "Erstellen". Klicken Sie dann in der rechten unteren Ecke des Bereichs auf die Schaltfläche Erweitert. Ändern Sie "Debug Info:" in "full" und klicken Sie auf OK. 

Hier sind die Screenshots:  enter image description here

 enter image description here  enter image description here

5
curiousBoy

Ich kann eine Lösung für einen Edge-Fall liefern, auf den ich vor einigen Tagen gestoßen bin. Es wird nicht die Lösung sein, die in alle oben beschriebenen Szenarien passt, für den Edge-Fall hatte ich es jedoch behoben.

Ich hatte das gleiche Problem mit der neuesten Version von 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 arbeitete an einem älteren Projekt, 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 in eine Version> = 4.5.2 hat für mich funktioniert. Sie müssen die Version des Projekts, die Sie testen, nicht ändern, es geht nur um das Testprojekt selbst.

5
baumgarb

Ich verwende 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 nicht im Testausgabefenster in Visual Studio angezeigt. 

Ich konnte den Fehler bei der Installation von xunit.runner.console feststellen und versuchte, die Tests über die Befehlszeile auszuführen. 

So führen Sie Xunit-Tests in CLI durch .

5
SohamC

Der Grund für mich war, dass der Zielaufbau zwischen Projekt-Debugger und Testläufer nicht derselbe war. Um diese Elemente zu vereinheitlichen:

  1. Test> Testeinstellungen> Standardprozessorarchitektur. Wählen Sie dann entweder X64 oder X86 aus.
  2. Projekt> (Ihr Projekt) Eigenschaften> Erstellen (Registerkarte)> Plattformziel.

Wenn sie identisch sind, erstellen Sie Ihre Lösung neu, und die Testmethoden werden angezeigt.

5
Jawad Sabir

Dies kann auch daran liegen, dass das Kontrollkästchen für den Build für das aktuelle Plattformprojekt in der Build-Konfiguration nicht aktiviert ist. Klicken Sie auf Erstellen | Configuration Manager. Stellen Sie dann sicher, dass die Testprojekte in der Build-Spalte für die von Ihnen verwendete Plattform ein Häkchen haben (z. B. 'x86').

Dies war definitiv die Lösung, die für mich funktioniert hat.

3
cd747

Stellen Sie sicher, dass Sie Ihre Komponententests nicht in einer .NET Standard 2.0-Klassenbibliothek geschrieben haben. Der Visualstudio-Runner unterstützt das Ausführen von Tests in netstandard2.0-Klassenbibliotheken zum Zeitpunkt dieses Schreibens nicht.

Hier prüfen für die Test Runner Compatibility-Matrix:

https://xunit.github.io/#runners

3
vullnetyy

Ich habe lange Zeit an diesem Problem gelitten.

  • Ich hatte etwa 100 Projekte, auf denen unterschiedliche Versionen auf verschiedenen Servern bereitgestellt wurden.

  • Das Aktualisieren von xunit von 2.2.0 auf 2.3.1 war keine Lösung, da der Build in 2.3.1 fehlgeschlagen ist.

Dann habe ich gerade xunit.runner.visualstudio auf 2.3.1 aktualisiert und alles hat gut funktioniert .. Ich habe diesen Befehl in meiner Paket-Manager-Konsole verwendet, um mein xunit.runner.visualstudio-Paket zu aktualisieren

Get-Project ComapanyName.ProjectName.*.Tests | Install-Package xunit.runner.visualstudio -Version 2.3.1
2
Nafeez Abrar

Ich hatte ein ähnliches Problem, da VS keine Testmethoden entdeckte. In meinem Fall hatte ich das statische Keyword mit der Methode, die ich entfernte und es funktionierte.

[TestMethod]

Before: public static void Test1()

After: public void Test1()
2
live-love

In meinem Fall hatte ich zwei verschiedene Testprojekte in der Lösung. Tests des Projekts 1 konnten gefunden werden, Tests des Projekts 2 jedoch nicht. Ich stellte fest, dass zunächst das Testprojekt 1 entladen, VS geschlossen, meine temporären Dateien gelöscht, die Lösung erneut geöffnet wurde, und VS neu erstellt wurde. Dadurch konnte VS meine Project 2-Tests erkennen.

Ich gehe davon aus, dass zwischen den beiden Testprojekten Konflikte auftreten müssen. Dies war der schnellste Weg, um mich in wenigen Minuten zum Laufen zu bringen. Die Knicke können später herausgearbeitet werden :).

2
Zach J.

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 durchgeführt. Also habe ich versucht, einfach meinen .vs-Ordner zu löschen, aber auch dort kein Glück. 

Am Ende habe ich meinen lokalen Ordner komplett gelöscht und das Repo erneut geklont. Das hat es für mich gelöst.

1
Paul G

In meinem Fall habe ich mehrere Testprojekte in derselben Lösung, und nur eines der Projekte zeigte den "Test Explorer" nicht an. 

Ich bin zum "Manage Nuget Package for Solution" gegangen, indem ich mit der rechten Maustaste auf die Lösung geklickt habe.

Ich habe unter der Registerkarte "Konsolidieren" festgestellt, dass es einige "Test" -Nuget-Pakete gab, die zwischen den Projekten nicht synchron waren. Ich klickte auf "Installieren" und meine fehlenden Tests wurden angezeigt.

1
CBBSpike

Haftungsausschluss: Es geht nicht um Xunit mit Visual Studio 2015, sondern um Visual Studio 2017 mit einer UWP Unit Test-Anwendung (MSTest). Ich habe zu diesem Thread die gleiche Sache gesucht, also wird vielleicht jemand anderes dasselbe 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.

1
Alex Albu

Happend zu mir, als ich meine ersten ersten Gehversuche mit IntelliTest in VS 2017 gemacht habe.

Wenn das Testprojekt automatisch von IntelliTest erstellt wird, verweist die Assembly auf Microsoft.ExtendedReflection ( ...\Programme (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\Erweiterungen\Microsoft\Pex\Microsoft .ExtendedReflection.dll ) fehlt ..__ Wenn hinzugefügt, werden die generierten Tests nach der Neukompilierung im Test Explorer angezeigt.

1
Christian

Der häufigste Schuldige für mich war, dass Visual Studio versucht, die Tests mit einer anderen Architektur als der getesteten Bibliothek auszuführen. Leider gibt es mehrere Stellen, an denen das schief gehen könnte.

Versuchen Sie in VS 2017, eine Run Settings-Datei zu erstellen, z. Default.runsettings in Ihrem Testprojekt. Wenn Ihre Hauptlib x64 ist, sollte der Inhalt Folgendes sein:

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <RunConfiguration>
    <TargetPlatform>x64</TargetPlatform>
  </RunConfiguration>
</RunSettings>

Wählen Sie dann diese Datei unter Test -> Test Settings -> Test Settings File aus.

Wählen Sie anschließend unter Test -> Test Settings, Default Processor Architecture die richtige Architektur aus.

Stellen Sie sicher, dass Sie die gesamte Lösung reinigen und erstellen. Möglicherweise müssen Sie das Test Explorer-Fenster schließen und erneut öffnen. Suchen Sie nach zusätzlichen Fehlern im Fenster "Ausgabe -> Test", um Hinweise auf falsche Architekturtypen zu erhalten.

Weitere Informationen zu den Testeinstellungen finden Sie hier hier .

1
Toby J

Es gibt einen weiteren Grund, der dazu führen kann, dass Test Explorer keine Tests anzeigt. Dies hängt mit dem neuen portablen .pdb-Dateiformat zusammen, das mit Visual Studio 2017/für .NET Core eingeführt wurde kann einige VS-Werkzeuge beschädigen. (Hintergrund: Siehe Der Fehlerbericht "Mono.Cecil verursacht OutOfMemoryException mit neuen .csproj-PDBs" .)

Werden Ihre Tests aufgrund des neuen Formats für portablen .pdb (Debug-Symbole) nicht gefunden?

  • Öffnen Sie das Fenster Output .
  • Dropdown-Auswahl für ändern Ausgabe von in anzeigen Tests .
  • Wenn Sie die folgende Ausgabe sehen (möglicherweise einmal für jeden Ihrer Tests wiederholt), haben Sie das in dieser Antwort beschriebene Problem:

    Exception System.OutOfMemoryException, Exception converting <SignatureOfYourTestMethod>
    Array dimensions exceeded supported range.
    

Wenn ja, gehen Sie folgendermaßen vor, um das Problem zu beheben:

  • Öffnen Sie die Eigenschaften Ihres Testprojekts (wählen Sie das Testprojekt im Projektmappen-Explorer aus und drücken Sie Alt+Enter).
  • Wechseln Sie zur Registerkarte Build .
  • Klicken Sie auf die Schaltfläche Erweitert ... (ganz am Ende dieser Registerkarte).
  • Wählen Sie in der Dropdown-Liste mit der Bezeichnung Debugging-Informationen nonename__, pdb-only oder fullaus, aber NICHTportablename__. Diese letzte Einstellung führt dazu, dass die Tests nicht gefunden werden.
  • Klicken Sie auf OK und bereinigen und erstellen Sie Ihr Projekt neu. Wenn Sie besonders sicher sein möchten, wechseln Sie in das Ausgabeverzeichnis Ihres Testprojekts und bereinigen Sie alle .pdb-Dateien, bevor Sie sie neu erstellen. Jetzt sollten Ihre Tests zurück sein.
1
stakx
  1. Schließen Sie alle Visual Studio-Instanzen
  2. Wechseln Sie zu% TEMP%\VisualStudioTestExplorerExtensions \
  3. Löschen Sie specrun-bezogene Ordner
  4. Versuchen Sie es nochmal

lass es mich wissen, danke

0
alvarodoune

Ich weiß nicht, ob einige von Ihnen auch JustMock verwenden, aber ich musste den Profiler in VS 2017 deaktivieren, damit die Testerkennung funktioniert.

0
chrisdrobison

Ich habe Temp,% Temp% und Prefetch gelöscht. Dann versuchte VS erneut zu öffnen und konnte die Testmethoden finden

0
Venkat Ramanan

Sie müssen alle Pakete aktualisieren, wenn Sie VS2015 nach VS2017 verschieben, um den Test im Test-Explorer zu ermitteln.

0
Sachin

Ich habe Testprojekt A und B. Tests in Projekt A wurden entdeckt, aber die Erkennung wurde für B nie angehalten. Ich musste TestHost manuell töten, um den Vorgang zu beenden.

Ich habe viele Dinge getan, die auf dieser Seite beschrieben werden, sogar bis zu dem Punkt, an dem ich nicht sicher bin, ob dies die Lösung ist. 

Nun hat es funktioniert und ich habe die Lösung geöffnet und den Test Explorer NICHT installiert. Stattdessen habe ich nur das Ausgabefenster auf "Tests" überprüft und konnte sehen, dass der Erkennungsprozess beendet ist und die Anzahl der Tests gleich A + B war. Danach habe ich den Test Explorer geöffnet und dann waren sowohl A als auch B anwesend .

Deinstallieren und installieren Sie die neuesten xUnit-Dateien ordnungsgemäß. Löschen Sie das% temp% wie oben erwähnt. Fügen Sie das NuGet-Paket "Microsoft.TestPlatform.TestHost" .__ hinzu. Fügen Sie das NuGet-Paket "Microsoft.NET.Test.Sdk" hinzu, starten Sie das Programm erneut, und überprüfen Sie nur die Ausgabe "Tests". Wenn es funktioniert, wirst du sehen

0
Tomas Hesse

In meinem Fall habe ich eine neue "Lösungskonfiguration" erstellt, wie im Bild gezeigt. Wenn ich also mein eigenes als "Prod" auswähle, erkennt es TestMehods aus irgendeinem Grund nicht. Wenn Sie wieder auf "Debug" wechseln, wird das Problem gelöst 

 enter image description here

0
batmaci

Mein Problem wurde durch die Installation des nuget xunit.runner.visualstudio behoben

0
kDar

Hier ist die Lösung, die für uns funktioniert hat. Nicht das Beste, aber vielleicht kann man davon profitieren.

Hintergrund:

  • Unsere Skripte wurden mit VS 2013 entwickelt und verwendeten NUnit VS Adapter 2.1.
  • Vor kurzem haben wir auf VS 2017 umgestellt und beim Öffnen der gleichen Lösung wurde der Test nicht im Test Explorer angezeigt

Beim Build würden wir diese Nachricht sehen:

[Informational] NUnit Adapter 3.10.0.21: Test discovery starting
[Informational] Assembly contains no NUnit 3.0 tests: C:\ihealautomatedTests\SeleniumTest\bin\x86\Debug\SeleniumTest.dll
[Informational] NUnit Adapter 3.10.0.21: Test discovery complete

Lösung (vorübergehend):

  • NUnit Adapter 3.10 deinstallieren ...
  • Installieren Sie den NUnit VS Adapter 2.1.

Nun werden die Tests angezeigt.

Müssen Sie immer noch herausfinden, wie unsere Skripte mit der neueren Adapter-Version funktionieren ... __ Alle Ideen - lassen Sie es mich wissen.

Wenn es ein anderes Thema ist - lass es mich wissen und werde meine Kommentare entfernen.

0
Andrew Homsky

Ich hatte das gleiche Problem mit Visual Studio 2019. Installierte gerade die folgenden NuGet-Pakete und das Problem wurde behoben.

1). xEinheit

2). xunit.runner.visualstudio

3). Microsoft.TestPlatform.TestHost

4). Microsoft.NET.Test.Sdk

0

Überprüfen Sie auch, ob sich eine vollständig leere app.config-Datei (vollständig leer und absolut ohne Markup) im Testprojekt befindet. Dies war der Täter in meinem Fall.

0
Gopal

Ich hatte viele unterschiedliche Projekte in meiner Lösung und konnte das Xunit-Testprojekt nicht ausführen. Ich habe alle bis auf mein Xunit-Projekt entladen und dann die Lösung neu erstellt, die Tests wurden im Visual Studio angezeigt und ich konnte sie ausführen.

0