wake-up-neo.com

Tests werden nicht in Test Explorer ausgeführt

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

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

enter image description here

  • 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 bereits versucht, meine Lösung sauber zu erstellen und/oder alle Ordner obj, bin, Debug und Release zu löschen

Ich würde mich über Hinweise informieren, die ein solches Verhalten verursachen könnten.

23
ElGauchooo

Wenn Ihre Projekte nicht alle AnyCpu sind, sollten Sie auch prüfen, ob die folgenden beiden Einstellungen übereinstimmen:

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

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

Ich fand heraus, dass wenn dies nicht der Fall war, mein Testprojekt nicht ausgeführt werden konnte.

37
Joseph Simpson

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

26
PabloR

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

6
Piers Myers

Clean-Rebuild Lösung hat bei mir funktioniert.

5
Eugene

Prüfen Sie, in welchem ​​Rahmen die Tests geschrieben werden (z. B. nunit, xunit, VS-Test usw.), und stellen Sie sicher, dass Sie die richtige Testadapter-/Runner-Erweiterung installiert haben. 

Für mich war es der NUnit 3 Test Adapter, der fehlte, und ich habe die erforderliche Versionsnummer durch einen Blick auf die nunit.framework-Abhängigkeitsversion bestätigt.

5
benmccallum

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

Die Tests waren dann im Test Explorer aktiv und lauffähig.

4
Kevin Mills

Ich hatte die gleichen Symptome.

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

Reinigen Sie dann die Lösung und bauen Sie sie erneut auf.

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

Und schließlich versuchen Sie, Resharper zu deinstallieren, was mein Problem behoben hat.

3
Gina

In meinem Fall lag dies daran, dass bei einem Testprojekt in meiner Lösung die NST-Pakete MSTest.TestFramework und MSTest.TestAdapter installiert waren, die anderen jedoch nicht. Diese Pakete mussten anscheinend keine Tests ausführen, bis sie bei einem Projekt in der Lösung installiert wurden.

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

2
SteveC

Hier war das Testprojekt nicht zum Bau bestimmt: 

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

1
CountOren

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

Symptome:

  • Nicht alle Tests liefen, aber sie hingen nicht vom jeweiligen Projekt ab, nur einige wurden ausgeführt.
  • Alle hingerichteten waren grün.
  • Tech Stack: Dotnet Core/XUnit/FluentAssertions
  • Alle Tests wurden erkannt und aktualisiert, falls sie geändert wurden.
  • Durch Auswahl oder mehrmaliges Ausführen von "Nicht ausgeführten Tests" konnten diese ausgeführt werden.

Problem:

Im Code ist ein Fehler aufgetreten, der eine Ausnahme in einem anderen Thread ausgelöst hat. Alle Testbestätigungen bestanden, aber die Testausführung wurde abgebrochen. Ich konnte den Fehler in der "Testausgabe" (NullException) sehen.

1
OriolBG

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

1
Ray Fan

Für mich (nicht ganz eine Lösung) hat es die .testsettings-Datei im Menü [Test] -> [Test Settings] -> [{current file}] deaktiviert, um die derzeit verwendete Datei zu deaktivieren.

In meinem Fall fängt es so an. 

<TestSettings name="Local (with code coverage)" id="e81d13d9-42d0-41b9-8f31-f719648d8d2d" xmlns="http://Microsoft.com/schemas/VisualStudio/TeamTest/2010">
  <Deployment>
    <DeploymentItem filename="ConfigurationImportExportTest\Configurations\" />
    <DeploymentItem filename="output\Debug\" />
  </Deployment>
  <Execution>

Anscheinend stört das DeploymentItem.

weil dies auf der Registerkarte Ausgabe war:

Warning: Test Run deployment issue: The Assembly or module 'Microsoft.SqlServer.Management.SqlParser' directly or indirectly referenced by deployment item 'output\Debug\' specified by the test settings was not found.
.... more of the same

Es sagt mir nicht viel.
Es hat den Anschein, als habe es damit zu tun, dass alle Projekte ihre Zusammenstellungsprodukte in einem gemeinsamen \output\Debug-Ordner ablegen

dies scheint es jedoch nicht zu behindern. Es gibt eine weitere Warnung heraus, in der es um Dinge wie

A testsettings or runsettings file with `ForcedLegacyMode = TRUE or VSMDI files are not supported by MSTest-V2.

Das scheint es zu stoppen.

0
Robetto

Für mich bestand die Lösung darin, die Einstellungen für das Resharper-Einheitstest "Standard-Plattformarchitektur" in "x64" zu ändern.

 enter image description here

0
Dharmesh Tailor

Für mich wurde dies durch eine VS-Erweiterung zur Messung der Codeabdeckung verursacht. Es konnte sich nicht auf eine bestimmte Versammlung beziehen und führte daher keinen der Tests durch. Tests würden problemlos über die Befehlszeile ausgeführt werden:

dotnet test

Um dieses Problem zu beheben, können Sie festlegen, dass ALLE Abhängigkeiten in Ihren Testprojekt-Debug-Ordner kopiert werden. Dadurch wird sichergestellt, dass alle Assemblys aufgelöst werden können, da "nicht verwendete" Assemblys nicht entfernt werden. Sie können Ihrer .csprog-Datei für Testprojekte Folgendes hinzufügen:

<PropertyGroup>
    <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup>

Suchen Sie in Ihrer Projektdatei nach Verweisen auf NUnit verschiedener Versionen:

In meinem Fall hatte ich Version 3.11.0 Von NUnit und NUnit3TestAdapter installiert, aber es gab alte Verweise auf Version 2.6.4 In der Projektdatei, die bei der Neuinstallation nicht entfernt wurden.

  • Lösung (Zur Behebung von Referenzproblemen empfohlen, siehe docs ):

    Installieren Sie NUnit und NUnit3TestAdapter Neu. Dadurch wurden die Referenzen in meinem Projekt behoben.
PM> Update-Package NUnit -reinstall
...
PM> Update-Package NUnit3TestAdapter -reinstall
  • Lösung 2 (Im Falle einer Neuinstallation wurden die Verweise nicht korrigiert):

    Deinstallieren und installieren Sie NUnit und NUnit3TestAdapter.
PM> Uninstall-Package NUnit
...
PM> Uninstall-Package NUnit3TestAdapter
...
PM> Install-Package NUnit
...
PM> Install-Package NUnit3TestAdapter
0
Yasel

Ich hatte verschiedene Versionen der Nuget-Pakete NUnit (3.11.0) und NunitTestAdapter (3.12.0). Als ich NUnit auf 3.12.0 aktualisierte, führte Visual Studio Tests durch.

0
Krzysztof

Für mich war das Update der MS.Test-Nuget-Pakete ein Problem

0
user2945722