Visual Studio 2015 oder 2017 nicht entdecken unit-tests
BEARBEITEN 2016-10-19:
Die ursprüngliche Frage war über eine spezifische Frage zu VS2015 CTP6 mit dem XUnit-test-runner. Es ist klar aus den Antworten, dass es ist ein viel breiteres Problem mit dem unit-test-discovery in Visual Studio, die möglicherweise auftreten, in vielen verschiedenen Situationen. Ich habe aufgeräumt, meine Frage zu reflektieren.
Ich habe auch ein script in meine eigene Antwort, die ich noch bis heute ähnliche Probleme zu lösen, wenn Sie auftauchen.
Viele andere Antworten haben sich ebenfalls als hilfreich, besser zu verstehen die Feinheiten der VS-test-runner. Ich Schätze, dass die Menschen noch teilen Ihre Lösungen!
Ursprüngliche Frage 2015-04-10:
Seit gestern, mein Visual Studio Test-Explorer nicht entdecken-tests für alle meine Projekte. Es zeigt nicht die grünen Ladebalken nach Gebäude, entweder.
Wenn ich zu den Visual Studio Test-Explorer, und klicken Sie auf "Alle Ausführen", oder wenn ich mit der rechten Maustaste klicken Sie auf eine test-Methode, und wählen Sie "Run Tests", bekomme ich folgende in meiner Ausgabe-Fenster:
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 arbeite mit Visual Studio 2015 CTP-Version 6 auf Windows 10 Pro Technical Preview, build-10041. Die .NET Framework version scheint nicht, egal, es kommt auf 4.0
, 4.5.2
und 4.6
.
Habe ich versucht mit dem folgenden Test-frameworks, 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
Fand ich eine Ausgabe auf GitHub (xunit), der scheinbar ähnlich: Nicht get-tests entdeckt #295, mit diesem Kommentar aus der xunit-team:
Bewusst sein, dass die Visual Studio 2015 CTP 5 ist berichtet worden, um gebrochen zu werden
von vielen Menschen mit unit-testing im Allgemeinen (nicht nur xUnit.net), so
erwarten Sie nicht, dass, um zu arbeiten.Bitte auch, sicherzustellen, dass Sie gereinigt habe Visual Studio Läufer
cache. Wenn es beschädigt wird, wird Visual Studio permanent daneben benehmen
bis es gelöscht. Den cache zu löschen, beenden Sie alle Instanzen von
Visual Studio, löschen Sie dann den Ordner
%TEMP%\VisualStudioTestExplorerExtensions (ehrlich gesagt, ist es wahrscheinlich
würde nicht Schaden, um alles zu löschen im %TEMP%, die gelöscht werden können).
Ich habe versucht Ihren Vorschlag, den Ordner zu löschen %TEMP%\VisualStudioTestExplorerExtensions
. Leider hat das nicht das problem zu beheben.
Bemerkte ich, dass ReSharper eigentlich ist in der Lage, um zu entdecken, einige tests. Es funktioniert nur für die VS und NUnit-tests, nicht für xunit.
Dort hat zu sein eine Art von temp-oder cache-Ordner habe ich löschen müssen, aber ich weiß, Visual Studio hat viele von Ihnen, und nicht alle von Ihnen können gelöscht werden, ohne unerwünschte Nebenwirkungen.
- Ich bin so froh, dass ich stolperte über dieses, es erinnert mich daran, weshalb ich mit einem 3rd-party-test-runner (in meinem Fall ncrunch). Ich habe bis auf mstest vor langer Zeit aus ähnlichen Gründen. Das ist natürlich keine Lösung, wenn Sie stecken mit mstest...
- Verwandte: stackoverflow.com/questions/35103781/...
- mit VS 2017, unglaublich genug, eine Reinigung meiner temp und localappdata VS2017 dazugehörigen Ordner, ein enger + reload + saubere Lösung und ein Windows-Neustart half nicht. Aber, überraschend, eine simlpe "entladen - laden" - Projekt nur auf einem meiner test-Projekte haben, helfen die test-Entdeckung stoppen hängen. Ich glaube nicht, verwenden Sie 3rd-party-unit-test-Paket.
- Für einige ppl, die dies interessant sein könnte oder relevanter (ich glaube nicht, dass ich sollte hinzufügen, dass es als Antwort) : Keine Quelle Verfügbar in der Test-Explorer - github.com/Microsoft/testfx/issues/274
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zu meiner überraschung -, clearing -, temp-Dateien, die sich in der
%TEMP%
Verzeichnis behoben das Problem für mich.Hinweis: Dieser Pfad ist in der Regel bei
C:\Users\(yourusername)\AppData\Local\Temp
Als @Warren-P enthalten ist, können Sie navigieren Sie zu dem temporären Ordner, indem Sie in
%temp%
im Startmenü, oder öffnen Sie den "Datei-Explorer" und geben Sie%temp%
in der Adressleiste.%TEMP%
im Start-Menü Ausführen und Sie findet Ihre temp-Ordner, ohne dass Sie zu erraten, was der Wert von temp.%TEMP%
directory verdient, um aufhören zu arbeiten.Könnte es sein, dass Ihre codes kompiliert werden, mit der x64 deshalb haben Sie zum aktivieren der Standard-Prozessor-Architektur X64.
Check-out, wenn NUnit Test Adapter 2/3 installiert ist in VisualStudio.
(Tools>Extensions and Updates )
Stellen Sie sicher, dass die richtige Prozessor-Architektur gewählt:
(Test>Test Settings>Default Processor Architecture)
BEARBEITEN 2016-10-19 (PowerShell-Skript)
Dieses Problem immer noch gibt, jeden jetzt und dann. Ich schrieb ein kleines PowerShell-snippet zu automatisieren clearing die entsprechenden cache/temp-Ordner/- Dateien für mich. Ich Teile es hier für zukünftige Leser:
Stellen Sie sicher, schließen Sie Visual Studio und vorher ist es wahrscheinlich eine gute Idee, reboot danach.
Löschen der TEMP-Ordner kann nicht notwendig sein, und kann in einigen Fällen sogar unerwünscht sein, so würde ich empfehlen, versuchen, ohne löschen des TEMP-Ordner. Nur das auslassen der
"$env:TEMP"
.Ursprüngliche Antwort 2015-04-12
War das problem "gelöst", nachdem eine Gründliche Reinigung der Visual Studio-bezogene temp/cache-Ordner.
Da ich nicht die Zeit haben, gehen Sie durch alles einzeln und dann testen, in-zwischen habe ich leider nicht wissen, was man tatsächlich das problem verursacht.
Diese sind die genauen Schritte, die ich gemacht habe:
temp
Dateien/OrdnerManuell deaktiviert/gelöscht, die 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
\Microsoft\VisualStudio\14.0\ImageLibrary\ImageLibrary.cache
?Einen Grund für dieses problem ist, dass Ihre test-Klasse ist nicht öffentlich. MSTest nur entdeckt, tests von öffentlichen Klassen.
In Visual Studio 2015(Update 3) wenn Sie möchten, fügen Sie die tests in der test-explorer, dann installieren Sie das NUnit Test Adapter.Download der adapter von Tools->Erweiterung Und Updates->Registerkarte "Online" (Sie haben für die Suche nach adapter)->Download.
Durch einen Neustart des Visual Studio können Sie die änderung für das test-framework.
Habe ich nicht eine vollständige Antwort, aber ich habe bestimmt einige Dinge durch das spielen mit einem test-Projekt:
xunit.runner.aspnet : 2.0.0-aspnet-beta4
zu sein scheint Teil des offiziellen beta4 aspnet5 Version funktioniert nicht in Visual Studio."xunit": "2.1.0-*"
und"xunit-runner.dnx": "2.1.0-*"
Pakete funktionieren in Visual Studio.Dies ist aktuell pro VS 2015 CTP-Version 6, mit der beta4 Versionen, nicht die Tageszeitungen.
Ich hatte eine Instanz wo einige tests würden nicht abgeholt werden, weil ich hatte Sie
async
wie folgt:public async void This_IsMy_UnitTest()
War das problem, ich vergaß, machen Sie wieder eine
Task
und nichtvoid
wenn ich die switch-over. Man würde denken, dies würde einen Fehler verursachen oder ist fehlgeschlagen test, aber pustekuchen. Die unit-tests, die in dieser Klasse wurden komplett ignoriert und gehandelt, wie Sie nicht existieren.War es nicht, nach über 3 sauber und baut + Neustart
VS.NET
sah ich, dass der test ausgeführt und das fehlschlagen angibt ich vergaß hinzuzufügen, dieTask
Gegenzug Typ:public async Task This_IsMy_UnitTest()
Nach dem update werden die unit-tests gefunden wurden, und arbeitete korrekt. Dies könnte ein Grenzfall, aber mit
async
tests für die Verwendungawait
innerhalb, aber nicht die Signatur korrekt ist, kann diese gleiche Problem und es ist nicht das 1. mal, dass ich dies getan haben.Gehen Sie auf Nuget-Paket-manager und download-Nunit-Adapter wie folgt.
Ich hatte das gleiche pronlem aber der Ordner "%TEMP%\VisualStudioTestExplorerExtensions" existiert nicht auf meinem Rechner, so wie ich die Beiträge gelesen hatte ich die Idee, zu erstellen, und es funktioniert. Die test-explorer ist nun in der Lage zu zeigen, alle meine tests.
Danke.
Nur neu starten Visual Studio und im Test-Explorer "Ausführen Alle" ... Alle meine tests sind dann entdeckt.
Die Lösung in meinem Fall war einfach zu installieren, die NUnit-3-Test-Adapter Erweiterung zu meinem Visual Studio 2015.
In meinem Fall (Visual Studio Enterprise 2015 14.0.25425.01 Update 3, Resharper 2016.2) ich brauchte nur zu tun, ein saubere Lösung aus dem Build-Menü. Wiederaufbau der Lösung verursachen dann die test-explorer zu "wecken" und finden Sie alle tests wieder.
In meinem Fall, MSTest unter VS 2015 ignorierte tests mit test (also die Methode) Namen, die länger waren als 174 Zeichen. Die Verkürzung der Namen erlaubt den test, um sichtbar zu werden. Das war bestimmt über guess-and-check durch die Manipulation der name des Tests.
In meinem Fall war das problem "zwischen Stuhl und Tastatur". Ich hatte eingeschaltet, um eine Konfiguration in der Konfiguration Manager, die nicht auch mein unit-test-Projekte auf zu bauen. Wechsel zurück zu einer Konfiguration (z.B. Debug) enthält alle Projekte, die das Problem beseitigt haben.
Diese wahrscheinlich nicht helfen, die meisten Menschen, aber jemand, der unerfahren auf unit-Test geschrieben hatte, eine test-Methode, die zurückgegeben
bool
stattvoid
:Ändern Sie den Rückgabetyp zu
void
das problem behoben.Sicherzustellen, dass Sie haben
xunit.runner.visualstudio
Paket in der test-Projekt-Pakete.config und auch das war richtig wiederhergestellt.Ich weiß, das war nicht der Fall von der ursprünglichen Frage, aber es könnte sparen Sie Zeit, für jemanden wie mich.
Möchte ich nur hinzufügen, dass ich fand eine ganz andere Lösung für die oben.
Ich erklärt hatte, dass meine test-Klasse wie folgt:
Sobald ich fügte hinzu, die
public
modifier der Klasse, es funktioniert wie erwartet!Wenn Sie sich gezielt .NET oder Standard .NET Core verwenden, benötigen Sie das NuGet-Paket für NUnit Test Adapter und nicht die Erweiterung.
Quelle: NUnit GitHub Wiki
.
Überprüfen Sie auch die FAQ dort:
Quelle: NUnit GitHub Wiki
Knallen, um meine Lösung. Ich war auf Windows 10, Visual Studio 2015, NUnit 3.5, NUnit Test Adapter 3.6 (über NuGet, nicht den Namen VISX-Erweiterung) und keiner meiner tests wurden entdeckt. Mein problem war, dass in den Tests Projekt meiner Lösung, irgendwie eine Verknüpfung zu meinem "Dokumente" - Ordner erstellt worden, der innerhalb der Projekt-Ordner. Ich vermute, dass die test-adapter war zu sehen, die Verknüpfung und bekommen aufgehängt, um herauszufinden, was mit ihm zu tun, was den Ausfall zur Anzeige von unit-tests.
Löschen der Datei \AppData\Local\Microsoft\VisualStudio\14.0\1033\SpecificFolderCache.xml gelöst ist das Problem für mich.
Ich wurde auch gebissen durch dieses wunderbare kleine feature und nichts, was hier beschrieben für mich gearbeitet. Es war nicht, bis ich doppelt überprüft die build-Ausgabe und bemerkt, dass die relevante Projekte nicht gebaut werden. Ein Besuch in configuration manager bestätigte meinen Verdacht.
Visual Studio 2015 hatte glücklicherweise erlaubte mir, neue Projekte hinzufügen, beschloss aber, dass es sich nicht lohnt Sie zu bauen. Sobald ich fügte hinzu, die Projekte zu bauen, die er zu spielen begann, sehr schön.
Ich entschloss mich, es durch eine änderung X64 :
Rechtsklick auf Projekt -> Eigenschaften -> Erstellen -> Plattform Ziel -> Jede CPU
Irgendwie mein Projekt wurde eingestellt, um zu kompilieren als Statische Bibliothek (.lib). Nach dem ändern dieser zu einem Dynamische Bibliothek (.dll), tests, bei denen richtig erkannt, die von Visual Studio 2012.
Mir das passiert, weil mein test-Projekt enthielt eine
app.config
.Es wurde automatisch Hinzugefügt, indem Sie NuGet-Pakete für die Montage Umleitung, aber meine tests schien gut laufen, ohne es.
Finden Sie unter: https://developercommunity.visualstudio.com/comments/42858/view.html.
War es so einfach für mich, um das Problem zu lösen wie:
Wir hatten das gleiche problem. Wir haben eine große VS 2015 Lösung mit mehreren C# - Projekte, und sogar mehr-test-Projekte.
Resharper test Entdeckung hat Prima funktioniert, aber VS Test-Explorer kläglich gescheitert.
Stellt sich heraus, dass die Projekte nicht die gleiche version von MsTest TestFramework und TestAdapter, und dass Sie manchmal verwendet, NuGets, und andere Zeiten, die guten alten Referenzen, und das wird nicht unterstützt offenbar (so viel für so eine teure IDE).
Entfernen Sie alle Microsoft.VisualStudio.Test* Referenzen und dann hinzufügen /aktualisieren die beiden MSTest NuGets das problem behoben.
Ich hatte das gleiche problem. Ich habe gerade gereinigt und neu erstellt das Projekt, und ich war in der Lage, um zu sehen, die tests, die fehlten.
Ich kämpfte mit demselben problem für VSTest Rahmen und meine Muttersprache unit-tests.
So, nachdem ich alle diese Dinge, die Sie vorher erwähnte, habe ich entfernt jedes vorkommen von ' # ' - symbol in meiner Lösung Pfad. Es funktioniert tatsächlich.
Lasse ich es hier für Google-Mitarbeiter, wer findet diese Frage in der Zukunft.
Diesem Thema ist etwas veraltet, aber meine Lösung für den fehlenden Test-status im VS2015:
Den task-status wird nur auf der Debug-buildconfiguration. Natürlich ist auch dies macht es unmöglich zu Debuggen test durch die test-explorer.
Stellen Sie sicher, dass Ihre Klasse mit der
[TestClass]
Attribut ist öffentlichen und nicht private.Ich den Fehler gemacht, das erstellen von asynchronen Methoden, die aber wieder erlischt.
Geändert:
public async void Test()
Zu:
public async Task Test()
Stellen Sie sicher, dass Ihre Test-Methoden haben keine Parameter. Dies ist ein weiterer Weg, Ihr test wird nicht angezeigt.
Keine Fehler oder Warnungen.
Möchte ich einen weiteren Grund, die tests können nicht gefunden werden, in meinem Fall, es handelte C++ unit-tests nicht gefunden wurden.
In meinem Fall-tests nicht gefunden wurden und für ein bestimmtes Projekt, weil Ihre Ausgabe-Verzeichnis wurde nicht im Projekt enthalten-Verzeichnis, das ändern dies gewährleistet die tests gefunden wurden.
Wenn Sie mehrere App-oder Web.Config-Dateien. eg:
Seine wahrscheinlich, Sie sind mit einer Config, die ist der RELEASE-MODUS und ziehen Sie den Debug-Modus Einstellung aus der config:
Die Config ändern, um eine, die nicht entfernen Sie den DEBUG-MODUS.
Ich hatte das gleiche Problem. Die unit-test-template von Visual Studio 2015 (Update 3) erstellt eine Klasse mit TestContext-Eigenschaft wie folgt definiert:
Nachdem es geändert zu einem öffentlichen Feld (ungly) der test-runner-entdecken Sie den test.
Sehr seltsames Verhalten, aber es war die Ursache für das Problem in meinem Fall.
Nachdem er 2 Tage... keiner der oben genannten für mich gearbeitet. Die einzige "Lösung" war: Gehen Sie auf Projekt-Eigenschaften -> Registerkarte "Erstellen". Klicken Sie dann auf die Schaltfläche Erweitert auf der rechten unteren Ecke des Fensters. Ändern Sie "Debug Info" auf "full" und klicken Sie auf OK.
Hier sind die screenshots:
Deaktivieren Sie Die Windows Defender-Dienst. Drehen Sie diese sofort aus, verursacht alle meine unit-tests im Test Explorer.
In der VS-Ausgabe-Bereich (geschaltet zum Test anzeigen), gab es diese Fehlermeldung:
Konnte nicht geladen, Datei oder assembly " XXX.UnitTest, Version=9.4.0.0, Culture=neutral, PublicKeyToken=14345dd3754e3918' oder eine Ihrer Abhängigkeiten. Starke Namen Validierung fehlgeschlagen. (Ausnahme von HRESULT: 0x8013141A)
In den Projekt-Einstellungen für den test-Projekt unter der Registerkarte Signierung, hatte jemand überprüft "Signieren Sie die assembly'. Deaktivieren und Gebäude verursacht, die tests zu zeigen.
Eines Kollegen löste auch das gleiche Problem durch hinzufügen von Schlüsseln aus diesem post in die registry:
https://blogs.msdn.microsoft.com/keithmg/2012/03/20/strong-name-validation-failed-exception-from-hresult-0x8013141a/
Das einzige, was für mich gearbeitet wurde:
Entfernen C:\Users(Ihr Benutzername)\AppData\Local\Temp
Andere Vorschläge, die in der Regel gültig sind.
Aber aus irgendeinem Grund, wenn VS nicht abholen Ihre änderungen, und hält bellen in Ihrer Ausgabe kann es nicht entdecken, tests, Reinigung dieses dir können den trick tun.
Und, ja, es kann nur "einige Tage" Sie starten und keine der Lösungen funktionieren nicht mehr, während "gestern" alles hat gut funktioniert.
Ich dieses problem gelöst, indem wir erkennen, dass die Ziel-Framework für meine test-Projekt war anders als das Projekt unter test. Ja, ich verursacht dieses problem durch ändern der Ziel-framework von der Standardeinstellung (Projekt - >Eigenschaften> - Anwendung), aber nicht das diese für das test-Projekt, das erstellt wurde, mehrere Wochen später. Die Diskrepanz nicht zu einem compiler-Fehler, aber es hat eine Verwarnung in der Fehler Liste Fenster. Sobald ich die option zur Anzeige von Warnungen, die Lösung war offensichtlich.
Für mich ein Upgrade auf die version 3.7 von NUnit gearbeitet.