web-dev-qa-db-de.com

Wie führe ich NUnit im Debug-Modus in Visual Studio aus?

Ich habe kürzlich ein Testframework für ein bisschen C # erstellt, an dem ich gearbeitet habe. Ich habe NUnit eingerichtet und ein neues Projekt in meinem Arbeitsbereich, um die Komponente zu testen. Alles funktioniert gut, wenn ich meine Unit-Tests von Nunit (v2.4) lade, aber ich bin an dem Punkt angelangt, an dem es wirklich nützlich wäre, im Debug-Modus zu arbeiten und einige Haltepunkte zu setzen.

Ich habe die Vorschläge aus mehreren Handbüchern ausprobiert, die alle darauf hindeuten, die 'Debug'-Eigenschaften des Testprojekts zu ändern:

Start external program: C:\Program Files\NUnit 2.4.8\bin\nunit-console.exe
Command line arguments: /Assembly: <full-path-to-solution>\TestDSP\bin\Debug\TestDSP.dll

Ich benutze dort die Konsolenversion, habe aber auch versucht, die GUI aufzurufen. Beide geben mir den gleichen Fehler, wenn ich versuche, das Debuggen zu starten:

Cannot start test project 'TestDSP' because the project does not contain any tests.

Liegt das daran, dass ich normalerweise\DSP.nunit in die Nunit-Benutzeroberfläche lade und dort die Tests abhalte?

Ich beginne zu glauben, dass das Problem möglicherweise darin besteht, dass VS ein eigenes Testframework ausführen möchte und deshalb die NUnit-Tests nicht gefunden werden können.

Bearbeiten: Für diejenigen, die nach Testgeräten fragen, sieht eine meiner .cs-Dateien im TestDSP-Projekt ungefähr so ​​aus:

namespace Some.TestNamespace
{
    // Testing framework includes
    using NUnit.Framework;

    [TestFixture]
    public class FirFilterTest
    {
        [Test]
        public void Test01_ConstructorTest()
        {
            ...some tests...
        }
    }
}

... Ich bin ziemlich neu in C # und dem NUnit-Testframework, daher ist es durchaus möglich, dass ich einige wichtige Informationen übersehen habe ;-)

Endgültige Lösung: Das große Problem war das Projekt, das ich verwendet hatte. Wenn Sie bei der Auswahl des Projekttyps Other Languages -> Visual C# -> Test -> Test Project Auswählen, wird Visual Studio versuchen, ein eigenes Testframework zu verwenden, soweit ich das beurteilen kann. Sie sollten stattdessen ein normales C # -Klassenbibliotheksprojekt auswählen, und dann funktionieren die Anweisungen in meiner ausgewählten Antwort.

117
Jon Cage

Ich verwende die gleiche Technik wie Sie, ohne das Flag/Assembly, d. H.

Start External Program: C:\Program Files\NUnit 2.4.8\bin\nunit.exe

Command line arguments: "<path>\bin\Debug\Quotes.Domain.Tests.dll"

Enthält TestDSP.dll alle Ihre TestFixtures?

Da mein Testprojekt nicht das Startprojekt in der Projektmappe ist, führe ich meine Tests aus, indem ich mit der rechten Maustaste auf das Testprojekt klicke und Debug -> Neue Instanz starten wähle

45

Wenn ich meine NUnit-Tests debuggen muss, füge ich einfach eine Verbindung zur NUnit-GUI-Anwendung nunit-agent.exe Verwenden Sie "Debuggen | An Prozess anhängen" und führen Sie die Tests über die GUI aus. Alle Haltepunkte in meinen Tests (oder dem Code, den sie testen) sind betroffen. Verstehe ich deine Frage falsch oder funktioniert das für dich?

100
Matt Hamilton

Entfernen Sie einfach die Linie, die aussieht

<ProjectTypeGuids>
    {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
</ProjectTypeGuids>

aus Ihrer Projektdatei. Diese Zeile teilt VS.Net im Wesentlichen mit, dass es sich um ein Testprojekt handelt, daher die Meldung "Testprojekt kann nicht gestartet werden". FYI hier sagt das 1. Guid "es ist ein Test", das 2. sagt "es ist C #". Informationen zu diesen Anleitungen finden Sie unter: http://www.mztools.com/Articles/2008/MZ2008017.aspx

21
user276648

Zusätzlich zu der Antwort von @Justin finden Sie hier weitere Details zu NUnit 2.6.

Unter Verwendung von NUnit 2.6 fügen Sie nunit.exe oder nunit-console.exe und NICHT den Agenten hinzu. Die von @Justin notierte Konfiguration ist etwas anders. Unten sehen Sie ein Beispiel von nunit.exe.config (dasselbe gilt für nunit-console.exe.config).

<startup useLegacyV2RuntimeActivationPolicy="true">
  <!-- Comment out the next line to force use of .NET 4.0 -->
  <supportedRuntime version="v2.0.50727" />  
  <supportedRuntime version="v4.0.30319" />
</startup>

Für .NET 4-Testprojekte müssen Sie die v2.0-Zeile auskommentieren oder entfernen, um Haltepunkte zu erreichen, wie der Kommentar vorschlägt. Nachdem ich das getan hatte, konnte ich das .NET 4.0-Testprojekt debuggen.

18
dblood

Wenn Sie NUnit 2.4 oder neuer verwenden, können Sie den folgenden Code in Ihre Klasse SetUpFixture einfügen. (Sie können dies mit älteren Versionen tun, müssen jedoch die entsprechenden Schritte für SetUpFixture ausführen oder sie in den Test selbst kopieren.)

[SetUpFixture]
public class SetupFixtureClass
{
    [SetUp]
    public void StartTesting()
    {
        System.Diagnostics.Debugger.Launch();
    }
}

Was Debugger.Launch() bewirkt, dass das folgende Dialogfeld angezeigt wird, wenn Sie auf In NUnit ausführen klicken.

JIT Debugger Dialog

Anschließend wählen Sie Ihre aktuelle Instanz von Visual Studio aus, während Ihr Projekt geöffnet ist (die zweite in meinem Screenshot). Anschließend wird der Debugger angehängt und alle Haltepunkte oder Ausnahmen werden in Visual Studio angezeigt.

17

Öffnen Sie in Nunit 3.0.1 (ich verwende VS2013) über Hauptmenü> Test> Windows> Test Explorer. Klicken Sie dann im "Test Explorer" mit der rechten Maustaste auf den Testfall. Möglicherweise wird Folgendes angezeigt: enter image description here

Hoffe das hilft.

11
Quinn

Installieren Sie TestDriven.NET , ein Plugin für Visual Studio

Von dort aus können Sie mit der rechten Maustaste auf Ihre Komponententest-Assembly klicken und auf Tests ausführen klicken, um die gesamte Suite auszuführen, mit der rechten Maustaste auf eine TestFixture-Klasse klicken, um nur die Tests in dieser Klasse auszuführen, oder mit der rechten Maustaste auf eine Testmethode klicken, um nur diese Methode auszuführen.

Sie haben auch die Möglichkeit, mit dem Debugger zu testen, wenn Sie im Debug-Modus in Ihre Tests einbrechen müssen.

6
Jon Limjap

Testen Sie NUnitit - ein Open-Source-Add-In für Visual Studio zum Debuggen von NUnit-Testfällen

HomePage - http://nunitit.codeplex.com/

6
abhilash

Entfernen Sie ProjectTypeGuids aus der Projektdatei.

5
Steve

Jetzt mit Bildern:

  1. Führen Sie NUnit gui aus ( Download 2.6.2 von hier ) und gehen Sie dann zu File -> Open Project

enter image description here

  1. Wählen Sie Ihren Test .dll aus dem Ordner bin (C:\......\[SolutionFolder][ProjectFolder]\bin\Debug\xxxxTests.dll)

  2. Gehe zu Visual Studio Debug -> Attach to process (An Prozessfenster anhängen wird geöffnet)

  3. Scrollen Sie in der Liste nach unten und wählen Sie nunit-agent.exe dann auf Attach klicken

enter image description here

  1. Zu diesem Zeitpunkt sollten die Haltepunkte in Ihren Tests reif rot (von hohl) werden.

  2. Klicken Sie auf Run auf Nunit Gui und du solltest deinen Haltepunkt treffen ...

Hoffe das spart dir etwas Zeit.

3

Wenn Sie in der Lage sind, die Konsole/GUI zum Laufen zu bringen, Ihre Haltepunkte jedoch nicht erreicht werden, kann dies daran liegen, dass Ihre App eine andere .NET-Laufzeit als NUnit ausführt. Überprüfen Sie, ob in Ihrer nunit-console.exe.config/nunit.exe.config die angegebene Laufzeit angegeben ist. (Die Konfigurationen befinden sich im selben Verzeichnis wie die der nunit-Exes.) Geben Sie die Laufzeit über den Startknoten an:

<configuration>
    <startup>
       <supportedRuntime version="4.0" />
    </startup>
2
Justin Turner

Wenn der Projektpfad Leerzeichen enthält, z. "Neues Projekt" in Pfad <path>\bin\Debug\New Project\Quotes.Domain.Tests.dll Setzen Sie dann den Projektpfad Startoption -> Befehlszeilenargumente in doppelte Anführungszeichen.

Ich habe viel Zeit aufgewendet, um das herauszufinden.

2
Gyan Sada

In Bezug auf das, was Herr Patrick McDonald sagte

Da mein Testprojekt nicht das Startprojekt in der Projektmappe ist, führe ich meine Tests aus, indem ich mit der rechten Maustaste auf das Testprojekt klicke und Debug -> Neue Instanz starten wähle

Ich habe versucht, mich für meine Testklassenbibliothek zu bewerben, habe aber einen Fehler bezüglich des Pfads erhalten. Daher habe ich versucht, die 'Befehlszeilenargumente' zu entfernen. Zum Glück hat es gut und wie erwartet funktioniert.

1

Für mich war die Lösung nunit Konfigurationsdatei anzupassen. Um nunit mit 4.5-.Net Framework und x64 Build Option zu verwenden, musste ich dem Starttag eine Zeile hinzufügen (unterstützte Runtime-Version).

<startup useLegacyV2RuntimeActivationPolicy="true">
        <!-- Comment out the next line to force use of .NET 4.0 -->
        <supportedRuntime version="v4.0.30319" />
</startup>

Danach könnte ich mit der rechten Maustaste auf das Testprojekt Debug -> Neue Instanz starten klicken. Vorher musste ich das Projekt erneut manuell an den Prozess anhängen.

Meine Debug-Eigenschaften lauteten C:\Programme (x86)\NUnit 2.6.4\bin\nunit.exe mit dem Argument des Speicherorts der zu testenden DLL.

Weitere Informationen: nunit zum Testen mit .NET 4.

0
Hauke Becker

Es gibt jetzt auch eine Erweiterung "Visual NUnit", mit der Sie die Tests in Visual Studio ausführen können, ähnlich wie mit den eingebauten Testframework-Handles. Schau es dir im Extension Manager an.

0
iamkrillin

Ich habe den gleichen Fehler mit MSTest. Ich habe festgestellt, dass im Fenster Testausgabe einige der Tests doppelte IDs hatten und nicht geladen werden konnten. Ich habe alle doppelten Tests entfernt und jetzt konnte ich die Tests ausführen, als ich das Projekt startete.

0
Vijay

Öffnen Sie Visual Studio ---> Ihr Projekt ---> Wählen Sie 'Eigenschaften' ---> Wählen Sie 'Debug' -> Wählen Sie 'Externes Programm starten' und legen Sie den Pfad Ihrer NUnit dort fest (zB: Externes Programm starten = C :\Programme\NUnit 2.6.2\bin\nunit.exe) ----> Speichern

Nachdem Sie dies eingestellt haben, klicken Sie auf Debuggen

0
Farija Khan

Es hört sich so an, als würden Sie versuchen, die falsche Bibliothek zu verwenden. NUnit kann nur gestartet werden, wenn die von Ihnen verwendete DLL TestFixtures enthält.

+1 auf TestDriven.Net. Ich hatte die Gelegenheit, es einige Male zu benutzen. Sie können die persönliche Version für Testzwecke gemäß der Lizenz unter http://testdriven.net/purchase_licenses.aspx herunterladen.

0
Mike737