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.
quelle
app.config
Datei in meinem Testprojekt: stackoverflow.com/a/47497668/67824 .Antworten:
In meinem Fall stellte sich heraus, dass ich einfach meine Testadapter und mein Testframework aktualisieren musste . Getan.
Beispiel mit dem NuGet Package Manager:
quelle
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.
quelle
%TEMP%
- Befehlsfenster bringen undecho %TEMP%
Die API für Testadapter für .NET Core wurde mit der Veröffentlichung von Visual Studio 2017 und dem Wechsel vom
project.json
Format zumcsproj
Format geändert . Dies machte die vorhandenendotnet-test-*
Adapter wiedotnet-test-nunit
veraltet.Die Adapter wurden aktualisiert, aber die Art und Weise, wie Sie Tests in Visual Studio oder in der Befehlszeile einrichten und ausführen,
dotnet test
erfordert unterschiedliche Referenzen in Ihren Testprojekten. Achten Sie auf jegliche Dokumentation, die Referenzpakete imdotnet-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.Sdk
das Testframework Ihrer Wahl und einen kompatiblen Testadapter hinzufügen . Für NUnit sehen Ihre Referenzen folgendermaßen aus:Ein Kommentar oben erwähnt das Hinzufügen von,
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
quelle
Ich hatte das gleiche Problem und brachte es zum Laufen, indem ich Folgendes tat ..:
quelle
Microsoft.NET.Test.Sdk
schien für mich zu funktionieren. Vielen Dank, StackOverflow. (.NET Framework WebApi 2-Lösung)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:
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
quelle
public
Klasse, sondern nur die Klasse generiert wird , sodass sie erstpublic
erkannt wird, wenn Sie den Bezeichner hinzufügen .In meinem Fall habe ich das Testprojekt auf
x64
Architektur ausgerichtet und die geänderte Testeinstellung Architektur (Test-> Standardprozessorarchitektur) wurde auf gesetztx86
. Sie passten nicht zusammen.Nach dem Zurücksetzen der Testeinstellung Architektur auf
x64
und dem erneuten Erstellen wurden alle Tests erneut erkannt.quelle
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
Ich habe eine neue Test.dll im Projekt erstellt und diese standardmäßig verwendet
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.
quelle
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.
quelle
Für mich war das Problem, dass ich versehentlich Testfälle in eine interne Klasse eingeordnet habe
Dies führte dazu, dass Testfälle nicht identifiziert wurden.
quelle
Stellen Sie sicher, dass Sie das richtige Microsoft.NET.Test.Sdk verwenden:
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:
aber ich denke nicht, dass es notwendig ist.
quelle
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.quelle
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,
quelle
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.
quelle
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.
quelle
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.
quelle
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
... 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:
quelle
Die Lösung bestand darin, meine
app.config
Datei 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.
quelle
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
quelle
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 Core1.0.1
installiert haben, aber die Version an der Eingabeaufforderung erhalten und es heißt, dass1.0.0
dies 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...
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
quelle
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.
quelle
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.
quelle
Das Entfernen der alten DLL sollte helfen. Löschen von temporären Dateien im Verzeichnis% TEMP% unter C: \ Benutzer (Ihr Benutzername) \ AppData \ Local \ Temp
quelle
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.TestFramework
undMicrosoft.VisualStudio.TestPlatform.TestFramework.Extensions
Pakete 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.
quelle
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).
quelle
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!
quelle
Im Fall von .NET Framework gab es im Testprojekt früher Verweise auf die folgenden DLLs:
Ich habe sie gelöscht und einen Verweis hinzugefügt auf:
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.
quelle
Ich hatte in meinem Fall das gleiche Problem, um es zu lösen
quelle
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.
quelle
Ändern Sie für mich das TargetFramework in der
.csproj
Datei des Testprojekts vonzu
hat funktioniert.
quelle
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.
quelle