Unit-Tests wurden in Visual Studio 2017 nicht erkannt


213

Ich habe Probleme mit VS 2017, seit ich es installiert habe. Jetzt scheinen Unit-Tests nur über die Befehlszeile "Dotnet-Test" ausgeführt zu werden.

Mein Projekt ist .NET Core 1.1.1. Ich habe das SDK und das Framework-Update für 1.1.1 installiert.

Ich habe das Beispiel bei MSDN ( https://msdn.microsoft.com/en-us/library/ms182532.aspx ) ausprobiert, das ebenfalls genauso fehlschlägt.

Alle NuGet-Pakete für die Tests und das Hauptprojekt sind aktuell. Und sowohl das Testprojekt als auch das Hauptprojekt werden fehlerfrei erstellt. Die Tests werden erfolgreich über die Befehlszeile ausgeführt.

Hat jemand Unit Tests für VS 2017 erhalten, wenn ja, wie?

Danke, John


Update - Erweitern

Hier ist ein Beispiel für ein einfaches Testprojekt, das auf GitHub nicht funktioniert . Dies ist ein Beispiel mit xUnit, aber ich habe NUnit und Visual Studio in MS-Tests ausprobiert. Unabhängig davon, welche Tests oder Änderungen ich vornehme, kann ich den VS-Testläufer nicht dazu bringen, Tests zu finden.

Was ich versucht habe

  • Löschen von VS-Test-Cache-Dateien DEL %TEMP%\VisualStudioTestExplorerExtensions
  • VS neu starten
  • Test Explorer schließen / öffnen
  • für xUnit installiert Microsoft.DotNet.InternalAbstractions( siehe SO-Beitrag )
  • Stellen Sie für NUnit sicher, dass der Adapter installiert ist und dieselbe Version (3) wie das NUnit-Paket aufweist
  • test -> test settings -> default processor architecture ist auf x86 eingestellt

Die Frage
Kann jemand bitte ein funktionierendes Beispiel für eine .Net Core 1.1.0-Lösung in VS2017 (.csproj-Projektdateien) bereitstellen, bei der der VS-Test-Explorer die Komponententests erfolgreich findet, ODER mir das Problem im angegebenen Beispiel zeigen.


Ich habe festgestellt, dass VS2017 nicht alle erforderlichen Pakete installiert. Als ich versuchte, mein MonoGame mit neu installiertem Windows 10 und VS 2017 von einem alten auf einen neuen PC zu verschieben, wurden seltsame Fehler über fehlende Pakete ausgegeben. Nach der Installation von VS2015 zusammen mit VS2017 waren alle Probleme behoben. Versuchen Sie möglicherweise, VS2015 zusätzlich zu installieren.
Mateusz

2
Versuchen Sie,
Testpakete

Ich prüfe, ob in VS 2017 alle Umgebungsvariablen richtig eingestellt sind.
John Pezzanite

1
Für NUnit müssen Sie das NuGet-Paket für den Adapter verwenden und es muss 3.8.0-alpha1 oder neuer sein.
Rob Prouse

2
In meinem Fall war es das bloße Vorhandensein einer app.configDatei in meinem Testprojekt: stackoverflow.com/a/47497668/67824 .
Ohad Schneider

Antworten:


189

In meinem Fall stellte sich heraus, dass ich einfach meine Testadapter und mein Testframework aktualisieren musste . Getan.

Beispiel mit dem NuGet Package Manager:

Geben Sie hier die Bildbeschreibung ein


4
Das hat mir auch geholfen! Beachten Sie, dass Sie Nuget-Pakete auf Lösungsebene verwalten und dies für alle Projekte tun können, in denen dies erforderlich ist. Sie könnten dann "mehrdeutige Referenz" -Fehler erhalten - für diese entfernen Sie einfach die alte DLL (Microsoft.VisualStudio.QualityTools.UnitTestFramework) aus Referenzen
Prashanth Subramanian

48
Diese Dinge sollten Erweiterungen von Visual Studio sein, keine NuGet-Pakete.
Jaider

1
Wir haben viele alte MSTest-Projekte, und mir war nicht bewusst, dass sie in ein NuGet-Paket verschoben wurden. Dies löste es auch für mich, ursprünglich dachte ich, es sei ein Fehler mit den neueren Versionen von ReSharper, bis mir klar wurde, dass der VS Test Explorer auch meine Tests nicht entdecken konnte.
David Anderson

1
Ich habe genau das Gleiche getan, wie in dieser Antwort angegeben. In meiner VS2017-Lösung habe ich ein MSTest-Projekt hinzugefügt, einige Tests hinzugefügt, aber das Erstellen der Lösung würde zu folgenden Ergebnissen führen: Test beendet beenden: 0 gefunden. Für das Testprojekt habe ich in NuGet Package Manager (dies ist auch auf Lösungsebene möglich) den MSTest.TestAdapter und den MSTest.TestFramework von Version 1.1.18 auf Version 1.2.0 aktualisiert. Nach dem Erstellen werden meine Tests nun im Test Explorer angezeigt.
Kershaw

1
Für mich hat es super funktioniert. Ich musste in VS2017 in den Nuget-Paket-Manager für das jeweilige Testprojekt gehen und einfach die verschiedenen Pakete, die ich wie nunit usw. hatte, aktualisieren und dann erstellen> neu erstellen und alles in Ordnung.
Tahir Khalid

126

Dies hat nur bei mir funktioniert (ich weiß nicht, ob es das Ergebnis einer Änderung der Arbeitsbereiche ist, die etwas beschädigt hat):

Löschen von VS-Testcache-Dateien in% TEMP% \ VisualStudioTestExplorerExtensions und Starten von VS2017.


4
Dies funktionierte einmal, nicht danach. Was (dieses Mal) es für mich behoben hat, war das Löschen des TestResults-Ordners und von bin / obj (zusammen mit dieser temporären Verzeichnisbereinigung)
icesar

24
Jeder, der sich fragt, wo %TEMP%- Befehlsfenster bringen und echo %TEMP%
eingeben

21
Ordner existiert nicht in temp: /
Douglas Gaskell

Was ist die Ursache für ein solches Verhalten?
Mykhailo Seniutovych

1
Der einfachste Weg, auf% TEMP% zuzugreifen, besteht darin, + R zu gewinnen und% TEMP%
einzugeben

58

Die API für Testadapter für .NET Core wurde mit der Veröffentlichung von Visual Studio 2017 und dem Wechsel vom project.jsonFormat zum csprojFormat geändert . Dies machte die vorhandenen dotnet-test-*Adapter wie dotnet-test-nunitveraltet.

Die Adapter wurden aktualisiert, aber die Art und Weise, wie Sie Tests in Visual Studio oder in der Befehlszeile einrichten und ausführen, dotnet testerfordert unterschiedliche Referenzen in Ihren Testprojekten. Achten Sie auf jegliche Dokumentation, die Referenzpakete im dotnet-test-*Format finden, da sie veraltet sind.

Zunächst muss Ihr Testprojekt auf eine bestimmte Plattform abzielen, entweder .NET Core oder .NET Framework. Es kann nicht auf .NET Standard abzielen, selbst wenn der zu testende Code .NET Standard ist. Dies liegt daran, dass das Ziel der Tests angibt, auf welcher Plattform die Tests ausgeführt werden sollen. .NET Standard ist insofern wie eine PCL (Portable Class Library), als es auf vielen Plattformen ausgeführt werden kann.

Als Nächstes müssen Sie Verweise auf Microsoft.NET.Test.Sdkdas Testframework Ihrer Wahl und einen kompatiblen Testadapter hinzufügen . Für NUnit sehen Ihre Referenzen folgendermaßen aus:

<itemgroup>
    <packagereference Include="Microsoft.NET.Test.Sdk" Version="15.0.0"></packagereference>
    <packagereference Include="NUnit" Version="3.7.1"></packagereference>
    <packagereference Include="NUnit3TestAdapter" Version="3.8.0"></packagereference>
</itemgroup>

Ein Kommentar oben erwähnt das Hinzufügen von,

<ItemGroup>
    <Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" />
</ItemGroup>

Dies ist nicht unbedingt erforderlich, kann aber helfen. Es wird von Visual Studio automatisch zu allen Unit-Test-Projekten hinzugefügt, damit Projekte mit Tests schnell gefunden werden können.

Wenn Ihre Tests nicht in Visual Studio angezeigt werden, müssen Sie zunächst versuchen, Ihre Lösung zu schließen und sie dann erneut zu öffnen. In Visual Studio scheint es Fehler zu geben, die Änderungen an Projekten beim Bearbeiten nicht erkennen.

Weitere Informationen finden Sie unter Testen von .NET Core mit NUnit in Visual Studio 2017


2
Das Targeting von .NET Framework anstelle von .NET Standard hat bei mir funktioniert. Vielen Dank.
Ben Griswold

7
Diese Microsoft.NET.Test.SDK-Referenz fehlte in meinem Projekt, und es gab nirgendwo einen Hinweis darauf, dass etwas darauf angewiesen war, um angezeigt zu werden. Fügte es über die Nuget-Konsole hinzu und alles begann zu funktionieren. Vielen Dank für die Referenzliste!
GWhite

Ich musste diesen Ordner von einem Kollegen in mein temporäres Verzeichnis kopieren und VS:% TEMP% \ VisualStudioTestExplorerExtensions \ MSTest.TestAdapter.1.1.18
Heiner

Wie kann ich ein Netstandard 2.0-Projekt testen, wenn ich mein Target Framework ändere? Ich kann nicht mehr kompilieren, da ein Projekt netstandard2.0 nicht von einem Projekt referenziert werden kann, das net46
Jerome2606

1
Das hat bei mir funktioniert. Danke für die detaillierte Lösung.
Talha Ashfaque

42

Ich hatte das gleiche Problem und brachte es zum Laufen, indem ich Folgendes tat ..:

  • Schließen Sie zuerst alle geöffneten Visual Studio-Instanzen und löschen Sie diesen Ordner:% TEMP% \ VisualStudioTestExplorerExtensions. ( Ausführen von Tests mit Visual Studio )
  • Gehen Sie zu Ihrem Nuget-Paketmanager und installieren Sie zuerst Microsoft.NET.Test.Sdk (15.3.0-Vorschau-20170425-07) und dann xunit.runner.visualstudio (2.3.0-beta1-build1309). Im beigefügten Nuget-Screenshot sehen Sie alle Pakete, die ich installieren musste, um das neueste VS 2017 zum Erkennen meiner Tests zu erhalten.Nuget Screenshot

35
Das Löschen von % Temp% \ VisualStudioTestExplorerExtensions hat mir gereicht.
Juan Pablo Gomez

Ja. Durch einfaches Löschen und Neustarten von VS wurde das Problem behoben.
Juan Carlos

Weiß jemand, was das überhaupt verursacht? Ich habe es jetzt zweimal erlebt, aber das Löschen dieses Ordners und das Neustarten von VS hat funktioniert. Es ist einfach komisch.
RubyHaus

@PmanAce - das habe ich tatsächlich getan. Ich verwende zwei verschiedene TFS-Instanzen (eine pro Projekt), sodass sich der Arbeitsbereich automatisch ändert, wenn ich zwischen Projekten wechsle.
RubyHaus

Das Löschen des Ordners und das Hinzufügen des Nugets Microsoft.NET.Test.Sdkschien für mich zu funktionieren. Vielen Dank, StackOverflow. (.NET Framework WebApi 2-Lösung)
bkwdesign

40

Das Vergessen, die Testklasse öffentlich zu machen, verhindert, dass die darin enthaltenen Testmethoden entdeckt werden

Ich hatte ein Standard-xUnit-Projekt und löschte das Beispiel UnitTest1.cs und ersetzte es durch eine Controller-Testklasse mit einigen Tests, aber es wurden keine gefunden

Kurz gesagt, nachdem ich die Pakete xUnit, Test.Sdk, xUnit.runner aktualisiert und das Projekt neu erstellt habe, ist ein Erstellungsfehler aufgetreten:

Fehler xUnit1000 Testklassen müssen öffentlich sein

Zum Glück hat die aktualisierte Version diese Ausnahme ausgelöst, um mir einige Probleme zu ersparen

Das Ändern der Testklasse, um öffentlich zu sein, hat mein Problem behoben


6
Ich bin mir nicht sicher, warum ich gewählt habe, aber vor meinem Morgenkaffee wurde dies zu 100% von mir übersehen.
Andrei

1
Versuchte alle anderen Antworten auf diese Frage / dieses Problem und dies war diejenige, die endlich funktionierte!
FastTrack

3
Das ist unglaublich peinlich, aber ... was auch immer. Das Komische ist, dass beim Erstellen eines Testsuite-Falls in VS2017 nicht die publicKlasse, sondern nur die Klasse generiert wird , sodass sie erst publicerkannt wird, wenn Sie den Bezeichner hinzufügen .
Briosheje

natürlich. Mein Badest sollte diese Funktion haben.
Crismogram

10

In meinem Fall habe ich das Testprojekt auf x64Architektur ausgerichtet und die geänderte Testeinstellung Architektur (Test-> Standardprozessorarchitektur) wurde auf gesetzt x86. Sie passten nicht zusammen.

Nach dem Zurücksetzen der Testeinstellung Architektur auf x64und dem erneuten Erstellen wurden alle Tests erneut erkannt.


in vs2017 die Einstellung aus dem Menü Test ->
Testeinstellungen

8

Ich hatte Probleme mit VS 2017, meinen UnitTest zu finden. Es war nicht das genaue Problem, das John stellte - aber dies war das erste Ergebnis in Google, nach dem ich gesucht habe, also wollte ich mein Problem teilen.

Ich hatte eine Legacy-Lösung von VS2010 über VS2013, VS2015. In VS2017 scheinen sich die Namespaces für das [TestMethod]Attribut geändert zu haben.

Bevor es benutzt wurde

Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.0.0.0

Ich habe eine neue Test.dll im Projekt erstellt und diese standardmäßig verwendet

Microsoft.VisualStudio.TestPlatform.TestFramework, Version=14.0.0.0

Meine Lösung bestand also darin, ein neues UnitTest-Projekt in VS2017 zu erstellen. Vielleicht hätte das Ändern der Baugruppenreferenzen für das alte Testprojekt auch funktioniert. Mit der neuen Referenz entdeckte VS2017 diese Unit-Tests.


Leider hat selbst ein neues Unit-Test-Projekt keine Testshow für mich: /
Douglas Gaskell

7

Lesen Sie keine veralteten Artikel unter MSDN. .NET Core-relevante Materialien finden Sie unter docs.microsoft.com

https://docs.microsoft.com/en-us/dotnet/articles/core/testing/

Im Allgemeinen benötigen Sie eine .NET Core-Konsolen-App, um die Unit-Testfälle zu enthalten.


Vielen Dank, Lex. Wenn dieser Artikel korrekt ist, können Sie .NET Core nur über die Befehlszeile testen. Dadurch geht die gesamte VS-Integration verloren, die wir beim Ausführen von Tests in VS 2015 hatten. Bin ich darin korrekt?
John Pezzanite

Verwenden Sie xUnit.net oder MSTest?
Lex Li

@ JohnPezzanite du musst mehr von dem zeigen, was du getan hast (wahrscheinlich ein GitHub-Repo, wenn möglich). Ich habe Projekte bei GitHub, die einwandfrei funktionieren, und viele andere auch.
Lex Li

Folgen Sie dem Beispiel in der von mir angegebenen Zeile. Ich habe es mit .NET Standard und .NET Core versucht, mit Microsoft Unit Tests wie im Beispiel und mit xUnit. Der .NET-Standard lässt sich in VS 2017 integrieren, während .NET Core nur über die Befehlszeile ausgeführt wird. Aber ich wiederhole, was ich oben gesagt habe. Es hört sich so an, als hätte Microsoft alle .NET Core-Unit-Test-Integrationsformulare VS 2017 entfernt.
John Pezzanite

@ JohnPezzanite test GitHub.com/lextm/sharpsnmplib und seine NetStandard-Lösung.
Lex Li

6

Für mich war das Problem, dass ich versehentlich Testfälle in eine interne Klasse eingeordnet habe

[TestClass]
  internal class TestLib {
}

Dies führte dazu, dass Testfälle nicht identifiziert wurden.


5

Stellen Sie sicher, dass Sie das richtige Microsoft.NET.Test.Sdk verwenden:

<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0" />

Verwenden Sie keine Vorabversion. Oder Sie müssen zur Konsolen-App (nicht zur Bibliothek) wechseln. Ich habe ein ähnliches Problem, aber mit der neuesten Version (15.0.0) funktioniert es wieder.

Außerdem müssen Sie möglicherweise Folgendes hinzufügen:

  <ItemGroup>
    <Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" />
  </ItemGroup>

aber ich denke nicht, dass es notwendig ist.


In welcher Datei befindet sich diese? Ich kann den Teil "Service Include" in meiner Projektdatei (* .csproj) finden, aber nicht die PackageReference.
Chris Bennet

@ChrisBennet in Ihrer * test.csproj-Datei.
Evgeni Nabokov

1
@ Evgeni-Nabokov ist richtig. Alle diese Änderungen befinden sich in der Datei [project] .test.csproj. Klicken Sie mit der rechten Maustaste auf das Projekt in Lösung und wählen Sie "Edit [project] .test.csproj". Siehe Beispiel unter: github.com/RenetConsulting/angularcore.net/blob/master/Business/…
Alex Altotsky

5

Ich weiß, dass OP dies auf seiner Checkliste aufgeführt hat, aber es ist leicht, diesen Punkt zu übersehen, wenn Sie Visual Studio 2017 neu installieren und ein neues Projekt einrichten. Abgesehen von der NUnit-Projektvorlage und dem NUnit Framework muss der NUnit-Adapter separat installiert werden, z Install-Package NUnit3TestAdapter -Version 3.9.0. B. mit dem Befehl NuGet . Danach begann Visual Studio Community 2017, Unit-Tests ohne Probleme zu entdecken.


1
Das hat mir geholfen!
YvesR

OMG, dieser hat es für mich getan. Wenn ich dich mit Kopfgeldern durchtränken könnte, würde ich es tun.
Ash

Dies war die einzige Lösung, die für mich funktioniert hat, danke!
Vadim Tofan

5

In meinem Fall konnte der Test Explorer meine Tests nicht finden, nachdem ich das Projekt auf eine neue Lösung verschoben hatte.

Die Antwort war einfach, dass ich in meinem Projekt einen Verweis auf den alten MS-Testadapter hatte.

Ich hatte ein Duplikat der folgenden Zeile für Version 1.1.11 des MS-Testadapters in meiner cs.proj-Datei:

<Import Project="..\packages\MSTest.TestAdapter.1.1.18\build\net45\MSTest.TestAdapter.props" Condition="Exists('..\packages\MSTest.TestAdapter.1.1.18\build\net45\MSTest.TestAdapter.props')" />

Um das Problem zu lösen,

  1. Klicken Sie mit der rechten Maustaste auf Projekt und wählen Sie "Projekt entladen".
  2. Klicken Sie mit der rechten Maustaste auf Projekt und wählen Sie "Bearbeiten".
  3. Entfernen Sie die Zeile, die die alte Version des Adapters importiert.
  4. Klicken Sie mit der rechten Maustaste auf das Projekt und wählen Sie "Projekt neu laden".
  5. Lösung / Projekt neu erstellen

Hatte das gleiche Problem. Das Entfernen und Wiederherstellen der Lösung hat nicht funktioniert. VS neu gestartet und Tests wurden entdeckt!
Mike Ward

4

Hatte gerade dieses Problem damit, dass Visual Studio meine Tests nicht finden konnte, die Schaltfläche zum Ausführen neben der Methode nicht sehen konnte und sie nicht durch Ausführen aller Tests im Projekt erkannt wurden.

Es stellte sich heraus, dass meine Testklasse nicht öffentlich war! Durch die Veröffentlichung konnte VS die Tests ermitteln.


2

Für mich war es einfacher, ein neues Testprojekt zu erstellen, das mit Visual Studio 2017 einwandfrei funktioniert ... und einfach die Testdateien zu kopieren, Referenzen hinzuzufügen und NuGet-Pakete nach Bedarf.

Geben Sie hier die Bildbeschreibung ein


Das Erstellen eines neuen Projekts hat wahrscheinlich Stunden Kopfschmerzen erspart!
M. Kazem Akhgary 19.

2

In meinem Fall war es ein Projekt, bei dem ich das Testprojekt von einer früheren .NET-Version aktualisiert hatte. In der app.config hatte ich Assemblybindungen zu früheren Versionen der abhängigen Assemblys.

Nachdem ich die Assembnlybindings in der app.config behoben hatte, wurden meine Tests entdeckt.


2

Entdeckung

Die oben genannten Top-Antworten haben bei mir nicht funktioniert (Neustart, Aktualisierung auf Version 1.1.18 ... Ich wurde bereits aktualisiert, Löschen der temporären Dateien, Löschen des NuGet-Cache usw.).

Was ich entdeckte, war, dass ich in verschiedenen Testprojekten unterschiedliche Verweise auf MSTest.TestAdapter und MSTest.Framework hatte (meine Lösung hat zwei). Einer wurde auf 1.1.18 hingewiesen wie ...

packages.config

<package id="MSTest.TestAdapter" version="1.1.18" targetFramework="net461" />
<package id="MSTest.TestFramework" version="1.1.18" targetFramework="net461" />

... aber ein anderer hat die Verweise auf 1.1.11. Einige der obigen Antworten führen zu dieser Entdeckung, als zwei Versionen der Bibliotheken nach dem Neustart von Visual Studio in meinem temporären Verzeichnis (% TEMP% \ VisualStudioTestExplorerExtensions \) angezeigt wurden.

Lösung

Durch einfaches Aktualisieren meiner packages.config auf die Version 1.1.18 wurde die Funktionalität meiner Unit-Tests in VS wiederhergestellt. Es scheint, dass es einige Fehler gibt, die keine direkten Verweise auf die MSTest-Bibliotheken zulassen. Hoffe das hilft dir.

Mehr Info:

  • Visual Studio 2017 Ent: 15.5.6 (Ich hatte von 15.0.1 aktualisiert, um dieses Problem zu beheben, aber ich hatte es in beiden)

2

Die Lösung bestand darin, meine app.configDatei aus meinem Unit-Test-Projekt zu entfernen . Die Tests werden erneut angezeigt!

Diese Datei verwies auf einige DLLs in den Bindingredirects, die in den Projektreferenzen nicht vorhanden waren. Fügen Sie die für Ihr Projekt unbedingt erforderlichen Baugruppenbindungen erneut hinzu.


1

In meinem Fall war das UWP-Projekt in der Lösung vorhanden, die das Problem verursachte.

Beim Entladen des UWP-Projekts wurden Tests entdeckt. Wenn ich es zurück geladen habe, ist der Test wieder verschwunden.

Versuchen Sie, alle Projekte zu entladen und nur das Testprojekt beizubehalten. In Test Runner werden zehn Wiederherstellungslösungen und Test-Shounds angezeigt. Laden Sie die Projekte nacheinander und erstellen Sie die Lösung jedes Mal neu, um herauszufinden, welches Projekt das Problem verursacht

Beispiel Repo

VS-Fehlerbericht


Schätzen Sie die Antwort, aber das ist nicht mein Problem. Wenn Sie sich das Beispiel-Repo ansehen, auf das ich in meiner Frage verlinkt habe, enthält die Lösung nur ein einziges Projekt. Es sind keine anderen Projekte zu entfernen. Diese Lösung ist zwar ein Test, also habe ich versucht, wie Sie sagten, Projekte auf meiner tatsächlichen Lösung zu entladen, aber es hat nicht funktioniert.
Rayepps

1

Das Thema

Das Problem ist, dass Visual Studio über die Dotnet-Core-Versionen auf dem Computer "verwirrt" wird. Als ich zur Systemsteuerung ging -> Programme deinstallieren, hatte ich 8 verschiedene Dotnet Core SDKs und Runtimes installiert. Dies führte dazu, dass VS beim Versuch, Tests zu finden, stillschweigend einen Fehler aufwies.

Überprüfen Sie das Problem

Sie können das Problem überprüfen, indem Sie in der Befehlszeile die Version von dotnet abrufen, auf der Sie sich befinden $ dotnet --version. Wenn Sie außer der neuesten Version, die Sie installiert haben, etwas sehen, stimmt Ihr Computer nicht überein und verwendet nicht die richtige Version. Beispiel ... Wenn Sie Dotnet Core 1.0.1installiert haben, aber die Version an der Eingabeaufforderung erhalten und es heißt, dass 1.0.0dies ein Problem ist.

Die Lösung

Löschen Sie alle alten Sachen. Ich habe nur mit dem begonnen, was ich entfernen musste (die ältesten Dotnet-RC-Versionen), aber beim Testen des Problems wurde immer noch die falsche Version angezeigt. Schließlich räumte ich ein, eine vollständige Reinigung durchzuführen. ICH...

  • Deinstallierte alle Visual Studio-Anwendungen (auf meinem Computer VS2015 und VS2017).
  • Deinstallierte alle Versionen von Dotnet Core (auch die neuesten)

Nachdem mein Computer vollständig leer war, habe ich nur VS2017 installiert (es wird mit dem neuesten Dotnet geliefert). Ich habe ein xUnit-Testprojekt erstellt und der Test-Explorer hat den Test sofort gelöst gefunden

Das mag übertrieben erscheinen, aber ich habe zwei Wochen lang versucht, dies auf andere Weise zu beheben. Wenn Sie das Problem haben, tun Sie es einfach, obwohl es Stunden dauern kann, Elemente zu deinstallieren / neu zu installieren, wird es Ihnen wahrscheinlich Zeit sparen.

Verweise

  • Weitere Informationen zur Behebung des Problems finden Sie im Blog-Beitrag @epestic .

1

Ich habe alles versucht, aber nichts hat geholfen. In meinem Fall hatte ich eine Lösung mit mehreren Testprojekten und einige von ihnen verwendeten das alte MS-Test-Framework, sodass Visual Studio nur diese fand.

Ich habe die Test-Framework-Pakete für alle Testprojekte installiert, wie in der akzeptierten Antwort gezeigt . Dann wurden die Verweise auf die alten Qualitätstools entfernt, Visual Studio neu gestartet und jetzt kann ich alle Tests sehen.


1

Für C ++:

Da es für C ++ - Tests keine spezielle Frage gibt, das Thema jedoch sehr ähnlich ist, hat mir Folgendes geholfen, als ich Probleme mit der Testerkennung hatte.

Wenn Sie die Desktop-Entwicklung nur mit C ++ installiert haben , besteht die Lösung darin, die Universal Windows Platform-Entwicklung auch mit den optionalen C ++ Universal Windows Platform-Tools zu installieren . Sie können diese im Visual Studio-Webinstallationsprogramm auswählen.

Erstellen Sie anschließend Ihr Testprojekt neu, und die Testerkennung sollte funktionieren.

Übrigens habe ich das Unit-Test-Projekt in VS2017 erstellt. Es könnte wichtig sein, da einige Benutzer erwähnt haben, dass sie Erkennungsprobleme in Projekten hatten, die von VS2015 auf VS2017 migriert wurden.


1

Das Entfernen der alten DLL sollte helfen. Löschen von temporären Dateien im Verzeichnis% TEMP% unter C: \ Benutzer (Ihr Benutzername) \ AppData \ Local \ Temp


1

Ich hatte das gleiche Problem. Meine Lösung war in Ordnung, aber als ich die Lösung öffnete, stellte ich plötzlich fest, dass die Tests weg sind.

Schließlich habe ich ein Downgrade durchgeführt Microsoft.VisualStudio.TestPlatform.TestFrameworkund Microsoft.VisualStudio.TestPlatform.TestFramework.ExtensionsPakete auf eine sehr alte Version (mit NuGet Manager) und Testmethoden angezeigt. Dann habe ich auf die neueste Version aktualisiert und es waren immer noch da.

Also einfach Downgrade und Upgrade-Pakete.


1

In meinem Fall hilft mir keine der oben genannten. Aber ich stufe NUNit3TestAdapter auf Version 3.8.0 herunter und aktualisiere dann auf die neueste Version (3.10.0).


1

Manchmal funktioniert es, den Namespace der Tests zu ändern. Ich hatte die Ordnerstruktur wie folgt:

A |___B | |___D |___C___E

Der Namespace war flach wie Tests. <Name> und sie wurden nicht im Testfenster angezeigt. Als ich den Namespace in die Struktur des Verzeichnisses änderte, wurden alle Tests angezeigt. Jetzt konnte ich zu jeder anderen gewünschten Namespace-Struktur zurückkehren.

Vergessen Sie nicht, Ihr Projekt zu erstellen!


1

Im Fall von .NET Framework gab es im Testprojekt früher Verweise auf die folgenden DLLs:

Microsoft.VisualStudio.TestPlatform.TestFramework
Microsoft.VisualStudio.TestPlatform.TestFramework.Extentions

Ich habe sie gelöscht und einen Verweis hinzugefügt auf:

Microsoft.VisualStudio.QualityTools.UnitTestFramework

Und dann erschienen alle Tests und begannen auf die gleiche Weise wie zuvor zu arbeiten.

Ich habe fast alle anderen Vorschläge oben ausprobiert, aber das erneute Referenzieren der Test-DLLs hat in Ordnung funktioniert. Ich habe diese Antwort für diejenigen gepostet, die in meinem Fall sind.


1

Ich hatte in meinem Fall das gleiche Problem, um es zu lösen

  1. Ich habe die Windows-Konsole geöffnet (Windows-Taste + cmd).
  2. Navigieren Sie zu dem Ordner, in dem das Projekt erstellt wurde.
  3. Der Befehl "dotnet test" wurde ausgeführt. Dies ist im Grunde derselbe Test, den Visual Studio ausführt. Wenn Sie ihn jedoch über die Konsole ausführen, können Sie den vollständigen Trace anzeigen.
  4. Ich habe die Fehlermeldung "TestClass-Attribut für nicht öffentliche Klasse MSTest.TestController.BaseTest definiert" erhalten.
  5. Also bin ich zum Testfall gegangen und habe ihn als öffentlich markiert, erneut erstellt und meine Tests werden korrekt angezeigt

0

Zuerst habe ich versucht, MSTest zu verwenden. Danach ändere ich es auf Nunit-Test. Dann wollte ich MSTest unterstützen. Ich habe alle nUnit-Codes und Referenzen entfernt, aber im Test Explorer wurden keine MSTest-Methoden angezeigt. Lösung: Ich habe alle mstest-Nuget-Referenzen entfernt und neu installiert. Getan.


0

Ändern Sie für mich das TargetFramework in der .csprojDatei des Testprojekts von

  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
  </PropertyGroup>

zu

  <PropertyGroup>
    <TargetFramework>net46</TargetFramework>
  </PropertyGroup>

hat funktioniert.


0

In meinem Fall war das Problem, dass der Projekttyp auf statische Bibliothek (lib) gesetzt war und es sich um eine dynamische Bibliothek (dll) handeln sollte.

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.