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.
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
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?
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
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.
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.
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.
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.
Testen Sie NUnitit - ein Open-Source-Add-In für Visual Studio zum Debuggen von NUnit-Testfällen
HomePage - http://nunitit.codeplex.com/
Entfernen Sie ProjectTypeGuids aus der Projektdatei.
Jetzt mit Bildern:
File -> Open Project
Wählen Sie Ihren Test .dll
aus dem Ordner bin (C:\......\[SolutionFolder][ProjectFolder]\bin\Debug\xxxxTests.dll
)
Gehe zu Visual Studio Debug -> Attach to process
(An Prozessfenster anhängen wird geöffnet)
Scrollen Sie in der Liste nach unten und wählen Sie nunit-agent.exe
dann auf Attach
klicken
Zu diesem Zeitpunkt sollten die Haltepunkte in Ihren Tests reif rot (von hohl) werden.
Klicken Sie auf Run
auf Nunit Gui
und du solltest deinen Haltepunkt treffen ...
Hoffe das spart dir etwas Zeit.
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>
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.
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.
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.
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.
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.
Ö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
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.