Tests werden nicht im Test Explorer ausgeführt


144

Ich arbeite derzeit an einer Lösung mit derzeit 32 Unittests. Ich habe mit dem Resharper-Testläufer gearbeitet - was gut funktioniert. Alle Tests werden ausgeführt, alle Tests zeigen das richtige Testergebnis. Jetzt sagte mir ein Mitarbeiter, dass die Tests mit dem Visual Studio-Test-Explorer nicht auf seinem Computer ausgeführt werden. Sie funktionieren auch nicht auf meinem Computer, daher kann ich einige lokal fehlende Dateien oder ähnliches ausschließen.

Der Test-Explorer zeigt alle Komponententests an. Sobald Sie jedoch auf "Alle ausführen" klicken, werden alle Tests ausgegraut und zeigen kein Ergebnis des Testlaufs an:

Geben Sie hier die Bildbeschreibung ein

  • Alle Testklassen sind öffentlich
  • Für alle Testklassen ist das [TestClass]Attribut deklariert
  • Alle Testmethoden verwenden das [TestMethod]Attribut
  • Sowohl der Produktivitätscode als auch die Testprojekte zielen auf .NET 3.5 ab.
  • Ich habe schon versucht, bereinigter Build meine Lösung und / oder löschen Sie alle obj, bin, Debugund ReleaseOrdner

Ich würde alle Hinweise begrüßen, die ein solches Verhalten verursachen könnten.


3
Aktualisieren Sie Ihren ReSharper. Siehe diese stackoverflow.com/questions/16011775/…
kmhigashioka

16
Wäre es nicht wunderbar, wenn VS sagen würde, warum kein Test durchgeführt wurde? Nicht übereinstimmende Zielplattform, fehlender
Bernhard Hofmann

1
Wo wird erwähnt, dass sie ReSharper verwenden?
Alex 75

4
@BernhardHofmann Ich bin gerade auf ein Problem wie dieses gestoßen, und es stellte sich heraus, dass VS unter Ausgabe> Tests einige Fehlermeldungen ausspuckte. Wichtig. Es ist frustrierend, dass VS sie nicht sichtbarer macht, aber in einer solchen Situation kann man sich das ansehen.
JLRishe

2
Sie alle könnten daran interessiert sein, diese Feature-Anfrage zu verbessern: Developercommunity.visualstudio.com/idea/947742/…
Kyle Delaney

Antworten:


157

Wenn Ihre Projekte nicht alle AnyCpu sind, möchten Sie möglicherweise auch überprüfen, ob die folgenden 2 Einstellungen übereinstimmen:

  1. [Rechtsklick auf Testprojekt] -> Eigenschaften -> Erstellen -> Plattformziel - zB x64

  2. [Hauptmenü] -> Test -> Testeinstellungen -> Standardprozessorarchitektur -> X64

Ich stellte fest, dass mein Testprojekt nicht ausgeführt werden konnte, wenn diese nicht übereinstimmten.


5
Diese Antwort lautet Hals an Hals mit "Ein- und Ausschalten". Wenn dies für Sie funktioniert, stimmen Sie bitte ab.
Lukkea

Dieser hat meine Probleme behoben (Wechsel von gemischten Plattformen zu anycpu)
Marcel Studer

1
Stellen Sie sicher, dass Ihre Testprojekte nicht netstandard2.0, sondern netcoreapp2.2
user2033412

4
Hat funktioniert. Ich würde uns mit VS wirklich eine klare Warnung oder Fehlermeldung geben oder so.
Anon

9
VS2019-Version: Hauptmenü -> Test -> Prozessorarchitektur für AnyCPU-Projekte -> X64.
StackOverthrow

64

Ich hatte das gleiche Problem in VS 2017. In meinem Fall wurde es durch einen Neustart von VS gelöst.


6
Mein vorheriger Kommentar, warum ich diese Ablehnung abgegeben habe, wurde gelöscht, daher werde ich etwas klarer sein. Dies ist keine Lösung für das Problem. Es ist eine sehr vorübergehende Lösung, die das zugrunde liegende Problem nicht löst. Ich denke nicht, dass SO ein Ort sein sollte, an dem den Leuten gesagt werden sollte, dass sie es aus- und wieder einschalten sollen. Das ist Wissen, das man lernen muss, bevor man hierher kommt. Eine Antwort finden Sie in der Antwort von Joseph Simpson.
Lukkea

5
@lukkea Ich folgte der Antwort von Joseph Simpson und bestätigte, dass alle meine Projekte AnyCpu waren. Ich hatte immer noch das hier beschriebene Problem. Für mich hat es geholfen, VS einfach neu zu starten. Dies ist nicht das erste Mal, dass VS2012 diese Art von Hickups hat (und nicht nur auf meinem Computer). Ich stimme Ihnen zu, dass dies keine gute Lösung ist, aber wenn an dem Projekt nichts falsch ist, könnte dies die einzige Hilfe sein. Man sollte jedoch prüfen, ob die Reinigung eines Umbaus auch nicht hilft.
Sascha

2
Wenn nur "Ein- und Ausschalten" alle meine Probleme beheben würde. Immer noch überraschend, wie viele es behebt. Es ist etwas peinlich, dass ich zum Stackoverflow gehen musste, um daran erinnert zu werden, aber ich fand diese Antwort nützlich.
Richard Garside

2
@lukka manchmal ist Visual Studio das zugrunde liegende Problem und ein Neustart ist die Lösung
JSON

1
Funktioniert immer noch für VS2019 ....
Tronald

44

Wenn Sie NUnit anstelle von MSTest verwenden, benötigen Sie die NUnit Test Adapter Extension für Visual Studio 2012/2013.


9
Dies half mir herauszufinden, dass ich den "NUnit 3 Test Adapter" installieren musste: marketark.visualstudio.com/…
Westerlund.io

10
In VS 2019 arbeitete für mich die Installation des Adapters vom Paketmanager nuget.org/packages/NUnit3TestAdapter
Maylon

Laut dieser Seite müssen Sie auch Microsoft.NET.Test.Sdkvon Nuget
BlueRaja - Danny Pflughoeft

In VS 2017 habe ich den Extension Nunit 3 Test Adapter installiert und es hat funktioniert.
Bob Lokerse

In VS 2019 habe ich auch den Extension Nunit 3 Test Adapter installiert und es hat funktioniert. Ein Hinweis: Ich musste auch Visual Studio aktualisieren.
Bob Lokerse

42

Ich musste meine asynchronen Testmethoden ändern, um Task anstelle von void zurückzugeben.

Die Tests waren dann im Test Explorer aktiv und ausführbar.


1
Es gibt keine Möglichkeit, auf den Abschluss einer asynchronen Void-Methode zu warten. Asynchrone Leere ist "Feuer und Vergessen". Deshalb können sie nicht getestet werden.
Ketobomb

Das Facepalming, das ich gemacht habe, als ich das gelesen habe, hallte über das Land ... Danke, dass du auf meine Dummheit hingewiesen hast. Das hat bei mir funktioniert. Upvoted
JP Chapleau

Obwohl unter der Kategorie "no duh" abgelegt. Ich wünschte, dies könnte mehr hochgestimmt werden, da es sehr offensichtlich ist, dass Ihr Rückgabetyp Aufgabe sein muss, aber leicht zu vergessen ist (weil anscheinend kein anderer Einheitentest auf der Welt alles andere als nichtig zurückgibt) und Sie in das Kaninchenloch schickt, um Ihre Einheit zu reparieren Testen Sie die Konfiguration, wenn kein tatsächliches Konfigurationsproblem vorliegt. Ich wünschte wirklich, dies hätte nur einen Compiler verursacht oder zumindest einen Laufzeitfehler ausgelöst.
pat8719

2
@ pat8719, klingt nach einer guten Idee für einen Code-Analysator. Sie sind nicht zu schwer zu schreiben. Ich habe gerade eine Xunit-Tatsache geschrieben async void Foo()und ihre Analysatoren haben sich nicht beschwert, aber sie könnten sicherlich eine hinzufügen, die dies tun würde. cc: @bradwilson
benmccallum

21

Überprüfen Sie, gegen welches Framework die Tests geschrieben wurden (z. B. nunit, xunit, VS-Test usw.), und stellen Sie sicher, dass Sie den richtigen Testadapter / die richtige Runner-Erweiterung installiert haben.

Für mich fehlte der NUnit 3-Testadapter, und ich bestätigte die erforderliche Versionsnummer anhand der Abhängigkeitsversion von nunit.framework (wählen Sie die DLL im Abhängigkeitsbaum im Projektmappen-Explorer aus und drücken Sie F4, um das Eigenschaftenfenster aufzurufen).


2
Hinweis für sich selbst: Mein ursprüngliches MSTest-Projekt Microsoft.VisualStudio.QualityTools.UnitTestFramework(unsicher, welche Version). Behobene Probleme, bei denen die Methode nicht ausgeführt (oder gefunden) wurde, indem diese Referenz entfernt und der neueste (v2.1.0) MSTest.TestAdapter (und Framework) installiert wurde
Adam Cox

@AdamCox Ist Microsoft.VisualStudio.TestTools.UnitTestingveraltet? Ich hatte einige Tests damit, die plötzlich wie oben beendet wurden, nachdem ich einige Verweise auf ein Projekt hinzugefügt hatte, von dem sie abhängig waren.
Ebyrob

@ebyrob, Athanasios 'Antwort unten könnte relevant sein. Anscheinend musste er nicht nur ein Upgrade / Upgrade auf die MSTest. * -Pakete durchführen, sondern auch einige Abhängigkeiten hinzufügen und einige Bindungsumleitungen korrigieren. Überprüfen Sie Ihre Warnausgabe.
Benmccallum

16

TLDR: Aktualisieren Sie die Testpakete, schauen Sie in die Ausgabe -> Testkonsole

Ich hatte anderthalb Tage damit zu kämpfen. Also habe ich Folgendes getan, um es zu lösen:

Symptome

  1. 5 Unit-Test-Projekte, alle in TestExplorer erkennbar
  2. 2 von 5 richtig ausgeführt
  3. 3 Angabe überhaupt nicht ausgeführt
  4. Das Problem begann nach einem .net Framework-Update

Ermittlung

Da alle Pakete während des .net Framework-Updates aktualisiert wurden, begann ich mit den Unterschieden zwischen Workin- und Nicht-Working-Projekten. Der erste Hinweis war, dass alle drei Projekte MSTest.TestAdapter und MSTest.TestFramework verwendeten

Natürlich ging ich in die -> Output - Konsole -> Drop - Down - Test in VS 2019 und am Ausgang aussah. Da gibt es nichts Nützliches.

Schritt eins der Lösung : Aktualisieren Sie MSTest.TestAdapter und MSTest.TestFramework auf Version 2.0.0

Schritt zwei der Lösung : Nun ist die Ausgabekonsole -> Dropdown - Liste Test Ausgabe gestartet eine zeigt nach dem anderen, Pakete und falsche Bindung Umleitungen fehlt

Schritt drei der Lösung : Fügen Sie die fehlenden Pakete manuell hinzu. Für mich waren das

  1. System.Runtime.Extentions
  2. System.Reflexion
  3. Vielleicht noch etwas, das mir fehlt

Schritt 4 der Lösung : Die unnötigen Bindungsumleitungen wurden entfernt / behoben.

Ich hoffe das wird jemand anderem helfen.


Du hast mich an anderthalb Tagen gerettet! Ich habe ein Projekt der Version 4.5 FW aktualisiert und versucht, alle unnötigen Inhalte aus den Paketen zu entfernen. In dieser Situation bin ich gelandet. Vielen Dank!
Numan

Ich glaube, ich habe etwas Ähnliches erlebt. Schließlich habe ich das Projekt einfach von Grund auf neu erstellt. Anscheinend gibt es eine Zeile in der * .csproj-Datei, die setzt ToolsVersionund meine stößt, was alles durcheinander gebracht hat. Alles, was ich sagen kann, ist "Käufer aufgepasst" für MS-Unit-Tests und bereit, Ihre * .csproj-Dateien sofort zu ersetzen. Dieses Zeug ist eng integriert und sehr versionierungsabhängig.
Ebyrob

Obwohl dies nicht direkt mein Problem war, zeigte mir der Tipp zum Überprüfen der Konsolenausgabe den Fehler (die DBContext Dispose-Methode enthielt einen Fehler), der die Ausführung meiner Tests verhinderte.
Iain Carlin


10

Ich habe festgestellt, dass im Projekt nicht auf die Assembly Microsoft.VisualStudio.QualityTools.UnitTestFramework verwiesen wurde . Stattdessen wurde auf Microsoft.VisualStudio.TestPlatform.TestFramework und Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions verwiesen . Als ich diese beiden Verweise entfernte und den Verweis auf die Assembly Microsoft.VisualStudio.QualityTools.UnitTestFramework hinzufügte , wurden die Tests, die zuvor mit dem blauen Ausrufezeichen markiert waren, plötzlich aktiv und begannen zu funktionieren.

Unit-Tests werden nicht mit falscher Montage ausgeführt

Mit der richtigen Baugruppe werden die Tests ausgeführt


2
Nach dem Wechsel von .NET Framework 4.6.2 zu .NET Framework 4.7.2 wurden meine Tests nicht mehr ausgeführt. Nach stundenlangem Versuch funktionierte nur diese Lösung für mich.
Éric Bergeron

10

Ich hatte dieses Problem und für mich wurde es durch mehrere Testprojekte mit verschiedenen Versionen von verursacht:

  • MSTest.TestAdapter
  • MSTest.TestFramework

Die Konsolidierung der Nuget-Pakete für die Projekte, damit sie gleich waren, löste das Problem für mich.


1
Diese Antwort hat mir geholfen, eine ähnliche Ursache zu finden. In meinem Fall hatten einige Testprojekte Verweise auf Microsoft.VisualStudio.TestPlatform.TestFramework (und wurden nicht ausgeführt), während andere Verweise auf Microsoft.VisualStudio.QualaityTools.UnitTestFramework (die Projekte, die ausgeführt wurden) hatten.
jr

10

Hatte das gleiche Problem nach der Neuinstallation von VS 2019. Tests wurden gefunden, aber nicht mit "Unerwarteter Fehler aufgetreten" ausgeführt. Behoben durch Einrichten von x64 anstelle von x86, das standardmäßig ausgewählt wurde.

Geben Sie hier die Bildbeschreibung ein


4
Dies war die Lösung für mich, zusammen mit dem Neustart von VS und dem Löschen des .vs-Ordners. Danke dir.
Donald.Record

8

In meinem Fall lag es daran, dass in einem Testprojekt in meiner Lösung die Nuget-Pakete MSTest.TestFramework und MSTest.TestAdapter installiert waren, in den anderen jedoch nicht. Diese Pakete mussten anscheinend erst getestet werden, nachdem sie von einem Projekt in der Lösung installiert worden waren.

Das Problem wurde behoben, indem diese Pakete in Testprojekten installiert wurden, in denen sie fehlten.


In meinem Fall ist es genau das Gegenteil: Jedes Unit-Test-Projekt mit den MSTest-Nuget-Paketen wird nicht ausgeführt, wie die anderen. Seltsam.
Palle

Gelöst : Ich habe eine .testsettings-Datei. MSTest-Pakete erfordern eine .runsettings-Datei. Deshalb laufen die Tests nicht.
Palle

7

Was es für mich behoben hat, war das Upgrade der MS.Test-Nuget-Pakete


7

Install Nunit3TestAdapterNuget hat dieses Problem gelöst


Dies hat auch mein Problem behoben! :)
Eru

6

Geben Sie hier die Bildbeschreibung ein

Das Festlegen der Prozessorarchitektur für AnyCPU-Projekte im Test Explorer hat mein Problem behoben! Siehe Screenshot oben.


Vielen Dank! Es hat mir geholfen =)
Alexander Brattsev

4

In meinem Fall hatte ich eine async void Methode und ersetzte sie durch async Task, so dass der Testlauf wie erwartet verlief:

    [TestMethod]
    public async  void SendTest(){}

ersetzen mit :

    [TestMethod]
    public async  Task SendTest(){}

1
Dies war mein Problem
Kyle Delaney

3

Ich hatte die gleichen Symptome.

Stellen Sie sicher, dass Sie die richtige Visual Studio-Erweiterung über Tools - Erweiterungen und Updates installiert haben. In meinem Fall musste ich XUnit und Specflow über die Option Online installieren.

Reinigen Sie dann die Lösung und erstellen Sie sie neu.

Wenn dies immer noch nicht hilft, löschen Sie Ihr temporäres Verzeichnis (suchen Sie im Startmenü nach% temp% und löschen Sie alle Inhalte in Temp).

Und dann versuchen Sie endlich, Resharper zu deinstallieren, wodurch mein Problem behoben wurde.


4
Resharper deinstallieren?! Ich denke nicht, dass dies eine Lösung ist ^^
Steve Rakebrandt

2

Hier wurde das Testprojekt nicht zum Bau markiert:

Build -> Configuration Manager ... -> Build für Ihr Testprojekt überprüfen


2

Da ich mit dieser Art von Fehler hierher gekommen bin, poste ich mein Problem / meine Lösung:

Symptome:

  • Nicht alle Tests wurden ausgeführt, aber sie waren nicht pro Projekt abhängig, nur einige von ihnen wurden ausgeführt.
  • Alle hingerichteten waren grün.
  • Tech Stack: Dotnet Core / XUnit / FluentAssertions
  • Alle Tests wurden erkannt und aktualisiert, wenn sie sich geändert haben.
  • Durch mehrmaliges Auswählen oder Ausführen von "Nicht ausgeführte Tests" konnten sie ausgeführt werden.

Problem:

Es gab einen Fehler im Code, der eine Ausnahme in einem anderen Thread auslöste. Alle Testzusicherungen wurden bestanden, die Testausführung wurde jedoch abgebrochen. Ich konnte den Fehler in der "Testausgabe" (NullException) sehen.


+1 Ich habe versucht, einen bestimmten Test zu debuggen. Wenn ich endlich einen weiteren, einfacheren Test durchführte, konnte ich den spezifischen Test debuggen. Diese Antwort brachte mich dazu, das zu versuchen.
Halvard

2

Hatte die gleichen Symptome, in meinem Fall war es die Dotnet Core SDK-Version , die das Problem war.

Die Projekte waren auf 2.2 ausgerichtet und konnten mit 3.0 erstellt werden. Nach der Installation der neuesten 2.2 SDK-Version konnten sie ausgeführt werden.


2

Ich habe viele Optionen mit Visual Studio 2019 Version 16.4.6 und ausprobiert Microsoft.VisualStudio.TestTools.UnitTesting, aber die einzige Möglichkeit, Tests erfolgreich auszuführen, bestand darin, den nächsten Befehl in der Konsole aufzurufen

dotnet test

Tests werden im Test Explorer entdeckt, das Ergebnis ist jedoch "Nicht ausgeführt".

Das Aktualisieren von Visual Studio hat nicht geholfen.

Das Problem mit "Kein Test entspricht dem angegebenen Testfallfilter FullyQualifiedName" wurde behoben, indem Updates für die nächsten Pakete für die nächsten Pakete ausgeführt wurden:

Microsoft.NET.Test.Sdk
MSTest.TestAdapter
MSTest.TestFramework

1

Für mich bestand die Lösung darin, die Einstellungen für Resharper Unit Testing "Standardplattformarchitektur" in "x64" zu ändern.

Geben Sie hier die Bildbeschreibung ein


Dies löste mein Problem mit einem .NET Core 3.1-Projekt, das sich weigerte, Tests im Test Explorer auszuführen. Nichts anderes würde es reparieren als dies.
J_L

1

Für mich hat ein Neustart von VS2017 nicht funktioniert. Ich musste sln bereinigen und fand dann eine Datei mit Tests, die nicht ausgeführt wurden, und führte nur diese Datei aus. Danach habe ich alles ausgeführt und es hat wieder normal funktioniert.


1

Ich hatte verschiedene Versionen der Nuget-Pakete NUnit (3.11.0) und NunitTestAdapter (3.12.0). Als ich NUnit auf 3.12.0 aktualisiert habe, hat Visual Studio Tests ausgeführt.


1

In meinem Fall hat es funktioniert, die MSTest-Nuget-Pakete zu aktualisieren. Konnte dieses Problem auch bei einem leeren MSTest-Projekt reproduzieren und die funktionierenden Pakete aktualisieren.


1

Für mich verursachte eine Eigenschaft namens TestContext in einer Basisklasse dieses Verhalten. Beispielsweise:

[TestClass]
public abstract class TestClassBase
{
    protected object TestContext { get; private set; }
}

[TestClass]
public class TestClass : TestClassBase
{
    // This method not found
    [TestMethod]
    public void TestCase() {}
}

1

Ich kann an Ihren Attributen erkennen, dass Sie MSTest verwenden. Ich hatte ein ähnliches Problem: Meine Tests wurden im Test-Explorer angezeigt, aber wenn ich versuchte, sie auszuführen (entweder durch Auswahl von Alle ausführen oder einzeln auswählen), wurden sie nicht angezeigt.

Mein Problem war, dass ich das Unit-Test-Projekt manuell aus einem leeren .NET Standard Class Library-Projekt erstellt hatte. Ich hatte das MSTest.TestFrameworkNuGet-Paket installiert , aber nicht dasMSTest.TestAdapter Paket. Sobald ich das Adapterpaket installiert hatte, liefen sie wie erwartet.

Scheint im Nachhinein offensichtlich, aber wenn Sie Unit-Test-Projekte aus einer Vorlage erstellen, nehmen Sie diese Dinge als selbstverständlich an.


1

Es ist erwähnenswert, dass NUnit Test Adapter-Dateien manchmal im Benutzerordner C: \ Benutzer [Benutzer] \ AppData \ Local \ Temp \ VisualStudioTestExplorerExtensions \ NUnit3TestAdapter.3.8.0 / build / net35 / NUnit3.TestAdapter.dll unter Windows 10 und Dadurch funktioniert der Test Explorer nicht mehr ordnungsgemäß.


1

Ich benutze VS2019 mit .Net 4.7. Ich habe die NUnit-Erweiterung v3 installiert und die Testeinstellungen geändert, um X64 zu verwenden. Mein Unit-Test-Projekt ist Beliebige CPU (würde funktionieren, wenn ich es auf x64 ändern würde). Jetzt kann ich meinen Code debuggen.



1

Sie können die Fehlerausgabe Ihres Testläufers anzeigen, indem Sie das Bedienfeld Ausgabe (Ansicht -> Ausgabe) öffnen und in der Dropdown-Liste "Ausgabe anzeigen von" die Option "Tests" auswählen

Ausgabe von anzeigen


Darüber hinaus , wenn Sie ReSharper installiert haben Sie eine Testdatei und schweben über den Test-Kreis neben einem Test öffnen können zusätzliche Fehler Informationen zu erhalten

Nachschärfeausgang

Wenn Sie darauf klicken, gelangen Sie zu einem Fenster mit detaillierteren Informationen. Alternativ können Sie dieses Fenster öffnen, indem Sie zu Erweiterungen -> Neu gestalten -> Windows -> Explorationsergebnisse für Komponententests gehen

Explharper Unit Test Exploration

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.