it-swarm.com.de

Visual Studio 2013 erkennt keine Komponententests

Ich habe eine einfache Lösung in Visual Studio 2013, die aus einem Webprojekt, einem Bibliotheksprojekt und einem Komponententestprojekt besteht. Wenn ich die Lösung öffne und versuche, die Komponententests auszuführen, werden sie von Visual Studio nicht erkannt. Um die Tests auszuführen, versuche ich, in das Menü zu gehen und Test -> Ausführen -> Alle Tests ausführen zu wählen oder indem ich das Test-Explorer-Fenster öffne. Mit diesen to-Methoden findet visual studio keine Tests in der Lösung.

Erstellen Sie zunächst ein einfaches Unit-Test-Projekt und versuchen Sie, den Test auszuführen. Visual Studio weiß, wie Sie den Test finden und ich kann ihn ausführen. Wenn ich dann meine vorherige Lösung öffne, entdeckt Visual Studio jetzt alle Tests. Ich versuche, meine Lösung zu speichern, schließe sie jedoch und öffne sie erneut. Ohne vorher ein Unit-Test-Projekt zu erstellen, findet das Visual Studio die Tests nicht wieder. Dies ist ein sehr merkwürdiges Verhalten, von dem ich nicht weiß, warum es passiert.

Ich habe in diesem Projekt, das das in die Visual Studio Team Foundation integrierte Quellcodeverwaltungs-Git verwendete, alleine gearbeitet. Das Problem von Visual Studio, die Unit-Tests nicht zu entdecken, beginnt, wenn ein neues Element in das Projekt kommt und wenn ich die Lösung über die Quellcodeverwaltung online neu erstellen muss. Vorher wurden alle Tests immer von Visual Studio entdeckt.

Für die Erstellung der Unit-Tests verwende ich die DLL Microsoft.VisualStudio.QualityTools.UnitTestFramework. Meine Version von Visual Studio ist: Microsoft Visual Studio Express 2013 für Web Version 12.0.30723.00 Update 3. Meine Version von .NET Framework ist 4.5.50938.

Alle meine Tests sind wie folgt:

[TestClass] 
public class Service1Test 
{ 
    [TestMethod] 
    public void Test1() 
    {
        Assert.IsTrue(True); 
    } 
}
145
miguelbgouveia

Einige Dinge, die ich bemerkt habe, müssen von Zeit zu Zeit durchgeführt werden, damit die Tests richtig angezeigt werden.

  1. Befindet sich Ihre Lösung in einem geschützten Laufwerk, für das Sie Administratorzugriff zum Lesen/Schreiben benötigen, wird manchmal nur ein Teil der Tests angezeigt. Führen Sie in diesem Fall auf jeden Fall VS als Administrator aus.

  2. Wenn Ihre Lösung 64-Bit ist, stellen Sie sicher, dass Test> Testeinstellungen> Standardprozessorarchitektur auf x64 eingestellt ist. Manchmal wird es auf x86 gesetzt. Stellen Sie es auf x64 ein und erstellen Sie es neu.

  3. Manchmal reicht ein Neustart von Visual Studio aus, da der Test-Explorer erneut gestartet wird.

  4. Vergessen Sie nicht, das Testprojekt/die Testlösung tatsächlich zu erstellen. (Wenn Sie möchten, dass es mit den anderen Projekten erstellt wird, klicken Sie mit der rechten Maustaste auf Ihre Lösung.> Eigenschaften> Konfigurationseigenschaften> Konfiguration.> Aktivieren Sie das Kontrollkästchen "Erstellen" für Ihr Testprojekt.)

  5. Stellen Sie sicher, dass sich die Tests in einem Abschnitt public Ihrer Testklasse befinden

208
AndyG

Wenn Sie NUnit verwenden, müssen Sie zuerst den NUnit-Adapter herunterladen.

Gehen Sie zu Extras → Erweiterungen und Updates… → Online → suchen Sie nach "NUnit Test Adapter".

80
Farukh

Stellen Sie sicher, dass Ihre Testklasse public ist, damit sie gefunden werden kann. Und wenn Sie auf eine andere Klasse verweisen, stellen Sie dasselbe sicher.

Wenn Sie keine Asserts haben oder den Test nicht mit einem [TestMethod] Dekorieren, wird ein Test möglicherweise nicht erkannt.

2 weitere Dinge: 1) Asynchrone Komponententests wirken bestenfalls lustig und überhaupt nicht schlimmstenfalls. Schauen Sie sich diesen Artikel von Stephen Cleary an und bleiben Sie dort, wenn es Sie interessiert.

2) Wenn Sie NUnit verwenden und auf dieselben Probleme stoßen, denken Sie daran, dass es für Nunit [TestCase] Anstelle von [TestMethod] Ist.

Vor diesem Hintergrund ist hier ein Artikel Ich habe im Code-Projekt sowohl MSTest als auch NUnit gepostet, falls Sie es ausprobieren möchten und Stellen Sie sicher, dass Sie nichts verpassen.

59
Noctis

Ich hatte das gleiche Problem, aber keine der anderen Lösungen hat funktioniert. Es stellt sich heraus, dass ich das NUnit 3-Framework mit dem 2-Adapter verwendet habe.

Wenn Sie NUnit 3 verwenden, rufen Sie Erweiterungen und Updates auf und installieren Sie den NUnit3-Testadapter.

28
Frank

XUnit-Benutzer bemerken möglicherweise, dass im Fenster "Test Explorer" keine Tests mehr aufgelistet sind. Versuchen Sie dieser wichtige Tipp , um die Tests wieder sichtbar zu machen (siehe unten).

Wenn Sie Probleme beim Erkennen oder Ausführen von Tests haben, sind Sie möglicherweise Opfer eines beschädigten Runner-Caches in Visual Studio. Fahren Sie alle Instanzen von Visual Studio herunter, und löschen Sie den Ordner% TEMP%\VisualStudioTestExplorerExtensions, um diesen Cache zu löschen. Stellen Sie außerdem sicher, dass Ihr Projekt nur mit einer einzigen Version des Visual Studio-Runner-NuGet-Pakets (xunit.runner.visualstudio) verknüpft ist.

Type in TEMP to find target folder

12
SushiGuy

Ich habe dieses Problem von Zeit zu Zeit. Für mich funktioniert es, Visual Studio herunterzufahren und in den Ordner zu wechseln:

%LocalAppData%\Microsoft\VisualStudio\12.0\ComponentModelCache

und löschen Sie den Inhalt.

Sobald Sie Visual Studio geöffnet und Ihr Projekt erneut geladen haben, sollte der Test Explorer Ihre Tests wieder enthalten

11
Mariusz Gorzoch

Für zukünftige Googler hatte ich ein seltenes Szenario, das dies verursachte.

In meiner Basistestklasse hatte ich eine Eigenschaft mit dem Namen TestContext. Dies beeinträchtigte die reservierte TestContext-Eigenschaft von MSTest und führte dazu, dass alle meine Tests vor VS/Resharper ausgeblendet wurden, mit Ausnahme von einem (der nicht von der Basis geerbt wurde).

5
Adam Behrle

Mein Problem bestand darin, dass meine Unit-Test-Methode nicht nichtig war und Parameter empfing.

4
alansiqueira27

Ich habe festgestellt, dass Unit-Test-Methoden als async void werden vom VS Test Explorer nicht erkannt. Dies scheint darauf zurückzuführen zu sein, dass VS keine Möglichkeit hat, auf den Abschluss eines Tests zu warten und zu entscheiden, ob dieser erfolgreich war oder nicht. Wenn Sie unbedingt eine Testmethode benötigen, um asynchron ausgeführt zu werden, geben Sie eine Task zurück, z. B. async Task. Ich fand, dass dies das Problem für mich behoben hat.

4
cookiemonster

für mich war es die Änderung von "Lösungskonfigurationen" in Debug (anstelle von Release).

4
zook2005

Versuchen Sie, alle Projekte als MSIL (Any CPU) anstelle von x86/x64 zu erstellen. Hat seltsamerweise für mich gearbeitet

3
Alfons

Während die Lösung von AndyG funktioniert, könnte eine dauerhaftere Lösung darin bestehen, die Umgebungsvariable PreferredToolArchitecture auf "x64" zu setzen, entweder durch:

Wie Visual Studio die native AMD64-Toolchain verwendet

oder von:

  • Systemsteuerung | System und Sicherheit | System | Erweiterte Systemeinstellungen | Umgebungsvariablen
  • PreferredToolArchitecture = x64
  • DefaultToolArchitecture = Native64Bit
  • PROCESSOR_ARCHITECTURE = x64
  • ProcessorArchitecture = x64
3
Kevin Johnsrude

Ich hatte es geschafft, meine als hinzuzufügen

public static void TestMethod1(){}

begann zu arbeiten, nachdem ich die statische Aufladung entfernt hatte.

2

Ich hatte das gleiche Problem und erinnere mich erneut (diese Situation war bereits vorher aufgetreten), dass die Auswahl von "Gemischte Plattform" im Menü der Lösungsplattform ebenso funktioniert wie die anderen Antworten.

2
Jeferson

Gehen Sie zum Nuget-Paket-Manager und laden Sie den Nunit-Adapter wie folgt herunter. enter image description here

2
Debendra Dash

Nehmen wir als Argument an, Sie müssen die X64-Architektur in Ihrem Testprojekt verwenden, damit die Abhängigkeiten ordnungsgemäß erstellt werden (wie in meinem Fall). Möglicherweise müssen Sie Ihre Standardprozessorarchitektur im Menü Test - Test Settings ändern. Wenn ich dies auf X64 setze, kann mein Test-Explorer meine Tests mit Microsoft.VisualStudio.TestTools.UnitTesting finden.

1
Dominic Hartjes

Nach 2 Tagen ... hat nichts von alledem für mich funktioniert. Die einzige "Lösung" war: Gehen Sie zu den Projekteigenschaften -> Registerkarte "Erstellen". Klicken Sie anschließend in der rechten unteren Ecke des Fensters auf die Schaltfläche Erweitert. Ändern Sie "Debug Info:" in "full" und klicken Sie auf OK.

Hier sind die Screenshots: enter image description here

enter image description hereenter image description here

1
curiousBoy

Sie müssen nur dieses Paket installieren:

NUnit TestAdapter NUnit TestAdapter

1
Sandy_Vu

Ich hatte genau das gleiche Problem.

Dies lag an der inkompatiblen Version von NUnit, die ich meinem Projekt (3.2.0) und dem von mir installierten Testadapter (2.0.0) hinzugefügt hatte.

Um dies zu beheben, verwenden Sie "Extras> Erweiterungen und Updates" und suchen Sie nach NUnit3-Testadapter. Danach wurden meine Tests gefunden.

Prost

1
Francis Smith

Es tut mir leid, dass Sie der langen Liste hinzugefügt haben, aber ich hatte ein ganz anderes Problem. Zunächst möchte ich erwähnen, dass ich mein Problem entdeckt habe, als ich im Test-Explorer auf "Alle ausführen" geklickt und dann das Build-Ausgabefenster in Visual Studio angesehen habe. Sie müssen es aktiv beobachten, da die Nachricht danach verschwindet.

Was das Problem betrifft, sieht es so aus, als ob während des Scannens der Tests die DLL geladen wird und ihre Testtypen aufgelistet werden. Dadurch werden die Referenzen geladen, und wenn während dieses Vorgangs ein Fehler auftritt , die Tests werden nicht im Explorer angezeigt. Ich hatte zwei Probleme, die verhinderten, dass der Test DLL erfolgreich geladen werden konnte:

  • In der Konfigurationsdatei war noch eine Bindungsumleitung vorhanden (Umleitung zu einer Version, die niedriger ist als die im Testprojekt angegebene).
  • Eine in Konflikt stehende Assembly-Referenz (Referenzen der zweiten Ebene können nicht geladen werden). AsmSpy ist übrigens ein großartiges Werkzeug, um danach zu suchen.
1
Martijn Evens

Um Tests im Test Explorer-Fenster anzuzeigen, musste ich NUnit3 Test Adapter 3.0 installieren, der im Paket-Manager nicht verfügbar war.

Heruntergeladen von https://visualstudiogallery.msdn.Microsoft.com/0da0f6bd-9bb6-4ae3-87a8-537788622f2d

1
Mikal Madsen

Bin nur darauf gestoßen, da ich keinen ähnlichen Fall gesehen habe, der meinem ähnlich war.

In dem .csproj Datei meines Testprojekts, NUnit-Referenzdatenschutz wurde auf False gesetzt:

<Reference Include="nunit.framework, Version=2.6.4.14350, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
  <HintPath>..\packages\NUnit.2.6.4\lib\nunit.framework.dll</HintPath>
  <Private>False</Private>
</Reference>

Nachdem ich <Private> bis True hat es funktioniert.

1
Kevin Giszewski

Wenn Sie eine Visual Studio-Lösung (in meinem Fall VS 2015 Community) von einem Netzwerkfreigabe oder Verzeichnis Eigene Dateien, das Teil einer Freigabe ist laden, treten diese Probleme auf . Ich habe es gelöst, indem ich die Lösung und die zugrunde liegenden Projekte in einen lokalen Ordner verschoben habe.

1
Ton Snoei

öffnen Sie das Projektmenü> Configuration Manager, und überprüfen Sie, ob Ihre Testprojektplattform mit dem Rest des Projekts übereinstimmt.

1
user5224229

Ich hatte ein ähnliches Problem mit Visual Studio 2015. Sobald ich ein async Task Komponententest Visual Studio hatte Probleme, es zu erkennen, die Quelle dafür zu finden, und ich konnte es nicht debuggen.

Es stellt sich heraus, dass es einen Fehler mit PostSharp gibt, der dieses Verhalten verursacht, und bei dem von mir verwendeten Testprojekt war PostSharp aktiviert.

In meinem Fall bestand die Lösung darin, PostSharp für das Unit-Test-Projekt zu deaktivieren, indem Sie Folgendes in das Feld <PropertyGroup> Element a am Anfang der csproj Projektdatei:

<SkipPostSharp>True</SkipPostSharp>

0
Adam Goodwin
  • Ich weiß, dass die Komponententests nicht gefunden werden, wenn die Lösung nicht erstellt wurde. Sie sollten es also versuchen (Erstellen der Lösung), aber diese Lösung ähnelt der Frage des Helpdesks, ob Ihr Computer angeschlossen ist.
  • Nachdem ein sauberer Neuaufbau das Problem für mich nicht behoben hatte, konnte er durch Ausführen eines vollständigen Batchbuilds behoben werden.
0
amalgamate

Hatte das gleiche Problem; Tests hörten plötzlich auf, entdeckt zu werden.

Nunit Test Adapter war irgendwie deaktiviert. Durch Klicken auf Aktivieren im Erweiterungsmanager wurde das Problem behoben.

0
HeatherD

In meinem Fall musste ich zwei NuGet-Pakete aktualisieren. - MSTest.TestAdapter - MSTest.TestFramework

0
Magic Mike

Ich hatte das gleiche Problem mit meinen Tests auf TFS 2015. Das Problem, das ich hatte, war, dass mein Test nicht mehr auftauchte. Der Testadapter konnte keine Tests finden. Ich habe alle Referenzen für Microsoft.VisualStudio.QualityTools.UnitTestFramework entfernt und jetzt werden sie wieder angezeigt. Ich hoffe meine Antwort hilft jemandem

0
Joerg

In meinem Fall war das Problem, weil mein class als abstract markiert war.

Entfernen Sie einfach das Schlüsselwort abstract.

0
glautrou

Ich hatte das gleiche Problem, bis mir klar wurde, dass ich einen Fehler beim Ausschneiden/Einfügen gemacht und aufgehört habe [Test Method] vor dem Test.

0
forforf

Eine andere Lösung:

Öffnen Sie eine Eingabeaufforderung, geben Sie set ein und überprüfen Sie, ob PROCESSOR_ARCHITECTURE richtig eingestellt ist. Wechseln Sie bei Bedarf zu x86 oder AMD64.

quelle: https://connect.Microsoft.com/VisualStudio/feedback/details/873170/vs2012-vstest-console-exe-error-incompatible-target-platform-settings-x86-with -systemarchitektur-arm-tritt-auf-wenn-prozessorarchitektur-nicht-gesetzt-ist

0
Alfons

Ich bin auf dasselbe Problem gestoßen. Und untersucht und festgestellt, dass die DLLs nicht gebaut wurden, und in den richtigen Ordner gestellt. Sobald ich meine Konfiguration änderte, erschienen sie. - Welche Ordner sollten in den Build-Optionen für Projekte verwendet werden? - Im Build-Menü-Eintrag Build-Konfiguration sollten sie überprüft werden.

das hat es für mich behoben.

0
kfn

In meinem Fall habe ich NUnit von 2.X auf 3.X aktualisiert, nachdem der Treiber gestoppt wurde, um in [SetUp] zu wechseln. Ich habe versucht, NUnit 3-Adapter von NuGet zu installieren, aber es hat nicht geholfen. Dann habe ich meine damals aktuelle Version auf TestDriven (3.8) deinstalliert und stattdessen 3.10 installiert. Es fing an zu arbeiten (wieder).

0
Alex Konnen

Stellen Sie sicher, dass alle Projekte mit derselben Konfiguration ausgeführt werden. Wählen Sie in der Dropdown-Liste Eigenschaften => Debuggen => Plattform Ihres Projekts die entsprechende Plattform (für mich war es "Beliebige CPU"), die in Ihren anderen Projekten festgelegt wurde.

0
Roni

Bei Visual Studio 2013.5 hat das Löschen des Verzeichnisses\TestResults in der Projektmappe geholfen. Visual Studio hat die MDF-Datei beschädigt, in der die ermittelten Tests gespeichert sind, und somit die Ermittlung von Komponententests verhindert.

0
MartijnK

Stellen Sie sicher, dass das Projekt als Testprojekt markiert ist. Sie können dies tun, indem Sie das folgende xml zur csproj Projektdatei hinzufügen.

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