EDIT 2016-10-19:
Die ursprüngliche Frage betraf ein spezifisches Problem für VS2015 CTP6 mit dem XUnit-Testläufer. Aus den Antworten geht hervor, dass es bei der Erkennung von Komponententests in Visual Studio ein viel umfassenderes Problem gibt, das in vielen verschiedenen Situationen auftreten kann. Ich habe meine Frage aufgeräumt, um dies zu reflektieren.
Ich habe auch ein Skript in meine eigene Antwort aufgenommen, das ich bis heute verwende, um ähnliche Probleme zu lösen, wenn sie auftreten.
Viele andere Antworten haben sich ebenfalls als hilfreich erwiesen, um die Feinheiten des VS-Testläufers besser zu verstehen. Ich schätze, dass die Leute immer noch ihre Lösungen teilen!
Ursprüngliche Frage 10.04.2015:
Seit gestern erkennt mein Visual Studio Test Explorer keine Tests für eines meiner Projekte. Die grüne Ladeleiste wird auch nach dem Bau nicht angezeigt.
Wenn ich zum Visual Studio-Test-Explorer gehe und auf "Alle ausführen" klicke oder wenn ich mit der rechten Maustaste auf eine Testmethode klicke und "Tests ausführen" auswähle, wird in meinem Ausgabefenster Folgendes angezeigt:
Could not load file or assembly 'Microsoft.VisualStudio.Web.ProjectSystem, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
Ich bin Visual Studio 2015 CTP 6 unter Windows 10 Pro Technical Preview, Build 10041. Die .NET Framework Version zu Materie scheint nicht läuft - es geschieht auf 4.0
, 4.5.2
und 4.6
.
Ich habe es mit den folgenden Test-Frameworks versucht und alle geben das gleiche Verhalten:
Microsoft.VisualStudio.QualityTools.UnitTestFramework v14.0.22609.0
xunit v2.1.0-beta1-build2945
mitxunit.runner.visualstudio v2.1.0-beta1-build1051
NUnit v2.6.4
mitNUnitTestAdapter v2.0.0
Ich habe auf GitHub (xunit) ein Problem gefunden, das ähnlich zu sein schien: Tests können nicht entdeckt werden # 295 , mit diesem Kommentar des xunit-Teams:
Beachten Sie, dass Visual Studio 2015 CTP 5 von vielen Personen mit Unit-Tests im Allgemeinen (nicht nur xUnit.net) als fehlerhaft gemeldet wurde. Erwarten Sie also nicht, dass dies funktioniert.
Stellen Sie außerdem sicher, dass Sie den Runner-Cache von Visual Studio bereinigt haben. Wenn es beschädigt wird, verhält sich Visual Studio dauerhaft schlecht, bis es gelöscht wird. Um den Cache zu leeren, fahren Sie alle Instanzen von Visual Studio herunter und löschen Sie dann den Ordner% TEMP% \ VisualStudioTestExplorerExtensions (ehrlich gesagt würde es wahrscheinlich nicht schaden, alles in% TEMP% zu löschen, was gelöscht werden kann).
Ich habe versucht, den Ordner zu löschen %TEMP%\VisualStudioTestExplorerExtensions
. Leider hat das das Problem nicht behoben.
Ich bemerkte , dass ReSharper tatsächlich ist die Lage , einige Tests zu entdecken. Es funktioniert nur für die VS- und NUnit-Tests, nicht für xunit.
Es muss eine Art temporären oder Cache-Ordner geben, den ich löschen muss, aber ich weiß, dass Visual Studio viele davon hat und nicht alle ohne unerwünschte Nebenwirkungen gelöscht werden können.
quelle
Antworten:
Zu meiner Überraschung löste das Löschen von temporären Dateien im
%TEMP%
Verzeichnis das Problem für mich.Hinweis: Dieser Pfad befindet sich im Allgemeinen bei
C:\Users\(yourusername)\AppData\Local\Temp
Wie bei @ Warren-P enthalten, können Sie zum temporären Ordner navigieren, indem Sie das
%temp%
Startmenü aufrufen, oder "Datei-Explorer" starten und%temp%
in die Adressleiste eingeben .quelle
%TEMP%
das Start-Start-Menü ein und es findet Ihren temporären Ordner für Sie, ohne dass Sie den Wert von temp erraten.%TEMP%
Verzeichnis speichert, verdient es, nicht mehr zu funktionieren.Es kann sein, dass Ihr Code mit x64 kompiliert wird und daher die Standardprozessorarchitektur als X64 aktivieren muss.
quelle
Überprüfen Sie, ob NUnit Test Adapter 2/3 in VisualStudio installiert ist.
(Tools>Extensions and Updates )
Stellen Sie sicher, dass die richtige Prozessorarchitektur ausgewählt ist:
(Test>Test Settings>Default Processor Architecture)
quelle
BEARBEITEN 19.10.2016 (PowerShell-Skript)
Dieses Problem tritt immer wieder auf. Ich habe ein kleines PowerShell-Snippet geschrieben, um das Löschen des entsprechenden Cache- / temporären Ordners / der Dateien für mich zu automatisieren. Ich teile es hier für zukünftige Leser:
Stellen Sie sicher, dass Sie Visual Studio vorher schließen, und es ist wahrscheinlich eine gute Idee, danach neu zu starten.
Das Löschen des TEMP-Ordners ist möglicherweise nicht erforderlich und in einigen Fällen sogar unerwünscht. Ich würde daher empfehlen, es zu versuchen, ohne den TEMP-Ordner zuerst zu löschen. Lass einfach das weg
"$env:TEMP"
.Ursprüngliche Antwort 2015-04-12
Das Problem wurde nach einer gründlichen Bereinigung der temporären / Cache-Ordner im Zusammenhang mit Visual Studio "gelöst".
Da ich nicht die Zeit hatte, alles einzeln durchzugehen und dann dazwischen zu testen, weiß ich leider nicht, welches das Problem tatsächlich verursacht hat.
Dies sind die genauen Schritte, die ich unternommen habe:
temp
/ -ordnernManuelle Löschung / Löschung der folgenden Dateien / Ordner:
%USERPROFILE%\AppData\Local\assembly
%USERPROFILE%\AppData\Local\Microsoft\UnitTest
%USERPROFILE%\AppData\Local\Microsoft\VisualStudio\14.0\1033\SpecificFolderCache.xml
%USERPROFILE%\AppData\Local\Microsoft\VisualStudio\14.0\1033\ProjectTemplateMRU.xml
%USERPROFILE%\AppData\Local\Microsoft\VisualStudio\14.0\ComponentModelCache
%USERPROFILE%\AppData\Local\Microsoft\VisualStudio\14.0\Designer\ShadowCache
%USERPROFILE%\AppData\Local\Microsoft\VisualStudio\14.0\ImageLibrary\cache
%USERPROFILE%\AppData\Local\Microsoft\VisualStudio Services\6.0\Cache
%USERPROFILE%\AppData\Local\Microsoft\WebsiteCache
%USERPROFILE%\AppData\Local\NuGet\Cache
%USERPROFILE%\AppData\Local\Temp
quelle
\Microsoft\VisualStudio\14.0\ImageLibrary\ImageLibrary.cache
?Ein Grund für dieses Problem ist, dass Ihre Testklasse nicht öffentlich ist. MSTest entdeckt nur Tests aus öffentlichen Klassen.
quelle
Wenn Sie in Visual Studio 2015 (Update 3) die Tests im Test-Explorer anhängen möchten, müssen Sie den NUnit- Testadapter installieren. Laden Sie den Adapter von der Registerkarte Extras-> Erweiterung und Updates-> Online herunter (Sie müssen nach dem Adapter suchen ) -> Herunterladen . Durch einen Neustart von Visual Studio können Sie die Änderung für das Testframework anzeigen.
quelle
Ich habe keine vollständige Antwort darauf, aber ich habe einige Dinge durch Spielen mit einem Testprojekt festgestellt:
xunit.runner.aspnet : 2.0.0-aspnet-beta4
, was anscheinend Teil der offiziellen Beta4-Version von Aspnet5 ist, funktioniert in Visual Studio nicht."xunit": "2.1.0-*"
und"xunit-runner.dnx": "2.1.0-*"
Pakete in Visual Studio.Dies ist gemäß VS 2015 CTP 6 aktuell und verwendet die Beta4-Versionen, nicht die Tageszeitungen.
quelle
Ich hatte einen Fall, in dem einige Tests nicht abgeholt wurden, weil ich sie
async
wie folgt gemacht hatte:public async void This_IsMy_UnitTest()
Das Problem war, dass ich vergessen hatte, sie zurückgeben zu lassen
Task
und nicht,void
als ich die Umschaltung durchführte. Man würde denken, dass dies einen Fehler oder einen fehlgeschlagenen Test verursachen würde, aber nein. Die Unit-Tests in dieser Klasse wurden vollständig ignoriert und taten so, als ob sie nicht existierten.Erst nach ungefähr 3 Bereinigungen und Builds + Neustart
VS.NET
sah ich den Testlauf und schlug fehl, was darauf hinweist, dass ich vergessen habe, denTask
Rückgabetyp hinzuzufügen :public async Task This_IsMy_UnitTest()
Nach dem Update wurden die Unit-Tests gefunden und funktionierten korrekt. Dies mag ein Randfall sein, aber
async
Tests für die Verwendungawait
innerhalb, aber ohne korrekte Signatur können dasselbe Problem verursachen, und es ist nicht das erste Mal, dass ich dies getan habe.quelle
Gehen Sie zum Nuget-Paketmanager und laden Sie den Nunit-Adapter wie folgt herunter.
quelle
Ich hatte das gleiche Pronlem, aber der Ordner "% TEMP% \ VisualStudioTestExplorerExtensions" war auf meinem Computer nicht vorhanden. Als ich die Beiträge las, hatte ich die Idee, es zu erstellen und es funktioniert. Der Test Explorer kann jetzt alle meine Tests anzeigen. Vielen Dank.
quelle
Starten Sie einfach Visual Studio neu und führen Sie im Test Explorer "Alle ausführen" aus. Alle meine Tests werden dann erkannt.
quelle
In meinem Fall (Visual Studio Enterprise 2015 14.0.25425.01 Update 3, Resharper 2016.2) musste ich nur eine saubere Lösung über das Menü Erstellen erstellen. Wenn Sie die Lösung neu erstellen, wird der Test-Explorer "aufgeweckt" und findet alle Tests erneut.
quelle
In meinem Fall bestand die Lösung darin, nur die NUnit 3-Testadapter- Erweiterung auf meinem Visual Studio 2015 zu installieren .
quelle
In meinem Fall war das Problem "zwischen Stuhl und Tastatur". Ich hatte im Konfigurationsmanager zu einer Konfiguration gewechselt, die meine Unit-Test-Projekte beim Erstellen nicht enthielt. Das Zurückschalten auf eine Konfiguration (z. B. Debug), die alle Projekte enthält, hat das Problem behoben.
quelle
In meinem Fall ignorierte MSTest unter VS 2015 Tests mit Testnamen (dh Methodennamen), die länger als 174 Zeichen waren. Durch Kürzen des Namens konnte der Test sichtbar werden. Dies wurde durch Erraten und Überprüfen durch Manipulieren des Testnamens festgestellt.
quelle
Dies wird den meisten Menschen wahrscheinlich nicht helfen, aber jemand, der noch keine Erfahrung mit Unit-Tests hat, hat eine Testmethode geschrieben, die zurückgegeben wurde,
bool
anstattvoid
:Ändern des Rückgabetyps, um
void
das Problem zu beheben.quelle
Stellen Sie sicher, dass
xunit.runner.visualstudio
Ihr Testprojekt packages.config ein Paket enthält, das auch korrekt wiederhergestellt wurde.Ich weiß, dass dies bei der ursprünglichen Frage nicht der Fall war, aber es könnte jemandem wie mir Zeit sparen.
quelle
Ich möchte nur hinzufügen, dass ich eine ganz andere Lösung als die oben genannten gefunden habe.
Ich hatte meine Testklasse wie folgt deklariert:
Sobald ich den
public
Modifikator zur Klasse hinzugefügt habe , hat es wie erwartet funktioniert!quelle
Wenn Sie auf .NET Standard oder .NET Core abzielen, müssen Sie das NuGet-Paket für den NUnit-Testadapter und nicht die Erweiterung verwenden .
Quelle: NUnit GitHub Wiki
.
Überprüfen Sie auch die FAQ dort:
Quelle: NUnit GitHub Wiki
quelle
Das ist mir passiert, weil mein Testprojekt eine enthielt
app.config
. Es wurde automatisch von NuGet-Paketen für die Assemblyumleitung hinzugefügt, aber meine Tests schienen ohne es gut zu laufen.Siehe: https://developercommunity.visualstudio.com/comments/42858/view.html .
quelle
Ich hatte das gleiche Problem. Ich habe gerade das Projekt gereinigt und neu aufgebaut und konnte die fehlenden Tests sehen.
quelle
Kommen Sie vorbei, um meine Lösung zu teilen. Ich war unter Windows 10, Visual Studio 2015, NUnit 3.5, NUnit Test Adapter 3.6 (über NuGet, nicht die VISX-Erweiterung) und keiner meiner Tests wurde entdeckt. Mein Problem war, dass im Testprojekt meiner Lösung irgendwie eine Verknüpfung zu meinem Ordner "Dokumente" im Projektordner erstellt wurde. Ich vermute, der Testadapter hat die Verknüpfung gesehen und wurde aufgehängt, um herauszufinden, was damit zu tun ist, was dazu führte, dass Unit-Tests nicht angezeigt wurden.
quelle
Durch Löschen der Datei \ AppData \ Local \ Microsoft \ VisualStudio \ 14.0 \ 1033 \ SpecificFold erCache.xml wurde das Problem für mich behoben.
quelle
Dieses Thema ist etwas veraltet, aber meine Lösung für den fehlenden Teststatus in VS2015:
Der Task-Status wird nur in der Debug-Build-Konfiguration angezeigt. Dies macht es natürlich auch unmöglich, Ihren Test über den Test-Explorer zu debuggen.
quelle
Ich wurde auch von diesem wunderbaren kleinen Feature gebissen und nichts, was hier beschrieben wurde, hat für mich funktioniert. Erst als ich die Build-Ausgabe noch einmal überprüfte und feststellte, dass die relevanten Projekte nicht erstellt wurden. Ein Besuch beim Konfigurationsmanager bestätigte meinen Verdacht.
Mit Visual Studio 2015 konnte ich gerne neue Projekte hinzufügen, entschied jedoch, dass es sich nicht lohnt, sie zu erstellen. Nachdem ich die Projekte zum Build hinzugefügt hatte, begann es gut zu spielen.
quelle
Ich habe es behoben, indem ich X64 geändert habe in: Klicken Sie mit der rechten Maustaste auf Projekt -> Eigenschaften -> Erstellen -> Plattformziel -> Beliebige CPU
quelle
Irgendwie sollte mein Projekt als statische Bibliothek (.lib) kompiliert werden . Nach dem Ändern in eine dynamische Bibliothek (DLL) wurden Tests von Visual Studio 2012 korrekt erkannt.
quelle
Es war so einfach für mich, das Problem zu beheben als:
quelle
Wir hatten das gleiche Problem. Wir haben eine große VS 2015-Lösung mit mehreren C # -Projekten und noch mehr Testprojekten.
Die Testentdeckung von Resharper funktionierte einwandfrei, aber VS Test Explorer schlug kläglich fehl.
Es stellt sich heraus, dass die Projekte nicht dieselbe Version von MsTest TestFramework und TestAdapter hatten und dass sie manchmal NuGets und manchmal gute alte Referenzen verwendeten, und dass dies anscheinend nicht unterstützt wird (so viel für eine so teure IDE).
Durch Entfernen aller Microsoft.VisualStudio.Test * -Referenzen und anschließendes Hinzufügen / Aktualisieren der beiden MSTest NuGets wurde das Problem behoben.
quelle
Ich habe dieses Problem gelöst, indem ich festgestellt habe , dass sich das Ziel-Framework für mein Testprojekt von dem getesteten Projekt unterscheidet. Ja, ich habe dieses Problem verursacht, indem ich das Zielframework von der Standardeinstellung (Projekt> Eigenschaften> Anwendung) geändert habe, dies ist jedoch für das Testprojekt, das einige Wochen später erstellt wurde, fehlgeschlagen. Die Nichtübereinstimmung nicht einen Compiler - Fehler verursachen, aber es hat ergeben eine Warnung in der Fehlerliste Fenster. Nachdem ich die Option zum Anzeigen von Warnungen ausgewählt hatte, war die Lösung offensichtlich.
quelle