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 einem Punkt angelangt, an dem es wirklich nützlich wäre, im Debug-Modus zu laufen und einige Haltepunkte festzulegen.
Ich habe die Vorschläge aus mehreren Handbüchern ausprobiert, die alle vorschlagen, 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 verwende dort die Konsolenversion, habe aber auch versucht, die GUI aufzurufen. Beide geben mir den gleichen Fehler, wenn ich versuche, mit dem Debuggen zu beginnen:
Cannot start test project 'TestDSP' because the project does not contain any tests.
Liegt das daran, dass ich normalerweise \ DSP.nunit in die Nunit-GUI lade und dort die Tests stattfinden?
Ich fange an 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 kann.
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 verpasst habe ;-)
Endlösung : Das große Problem war das Projekt, das ich verwendet hatte. Wenn Sie Other Languages -> Visual C# -> Test -> Test Project
... auswählen, wird Visual Studio bei der Auswahl des Projekttyps 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.
quelle
Antworten:
Ich benutze die gleiche Technik wie Sie es mit Jon versuchen, ohne das Flag / Assembly, dh
Enthält TestDSP.dll alle Ihre TestFixtures?
Da mein Testprojekt nicht das Startprojekt in der Lösung ist, führe ich meine Tests aus, indem ich mit der rechten Maustaste auf das Testprojekt klicke und Debug -> Neue Instanz starten wähle
quelle
/run
zu Ihren * Befehlszeilenargumenten hinzufügen , die automatisch Tests ausführen ... Ich habe alles in meinem Blog-Beitrag zusammengefasst (mithilfe von Bildern) .<supportedRuntime version="v2.0.50727" />
in nunit.exe.config einen Kommentar abgeben.Wenn ich meine NUnit-Tests debuggen muss, füge ich einfach
nunit-agent.exe
über "Debug | An Prozess anhängen" eine Verbindung zur NUnit-GUI-Anwendung hinzu und führe die Tests über die GUI aus. Alle Haltepunkte in meinen Tests (oder der Code, den sie testen) werden getroffen. Verstehe ich Ihre Frage falsch oder funktioniert das für Sie?quelle
<startup> <supportedRuntime version="4.0" /> </startup>
.Entfernen Sie einfach die Linie, die aussieht
aus Ihrer Projektdatei. Diese Zeile teilt VS.Net im Wesentlichen mit, dass es sich um ein Testprojekt handelt, daher "Testprojekt kann nicht gestartet werden". Zu Ihrer Information hier sagt der 1. Guid "es ist ein Test", der 2. sagt "es ist C #". Informationen zu diesen Guids finden Sie unter: http://www.mztools.com/Articles/2008/MZ2008017.aspx
quelle
Neben der Antwort von @Justin finden Sie hier einige weitere Details zu NUnit 2.6.
Mit NUnit 2.6 an nunit.exe oder nunit-console.exe anhängen und NICHT an den Agenten. Die von @Justin notierte Konfiguration unterscheidet sich geringfügig. Unten finden Sie ein Beispiel aus nunit.exe.config (dasselbe gilt für nunit-console.exe.config).
Für .NET 4-Testprojekte müssen Sie die v2.0-Zeile auskommentieren oder entfernen, um Haltepunkte zu erreichen. Danach konnte ich das .NET 4.0-Testprojekt debuggen.
quelle
v2.0.50727
Beim Debuggen von .NET 2-Assemblys von VS2005 mit nunit hatte ich nur Erfolg mit der Zeile. (Diev4
Zeile verhinderte, dass der Debugger von VS 2005Wenn Sie NUnit 2.4 oder neuer verwenden, können Sie den folgenden Code in Ihre
SetUpFixture
Klasse einfügen . (Sie können dies mit älteren Versionen tun, aber Sie müssen alles tun, was dem entsprichtSetUpFixture
, oder es in den Test selbst kopieren.)Was
Debugger.Launch()
tut , ist Sache der folgende Dialog , um zu zeigen , wenn Sie Run innerhalb NUnit klicken.Anschließend wählen Sie Ihre laufende Instanz von Visual Studio mit geöffnetem Projekt aus (die zweite in meinem Screenshot). Anschließend wird der Debugger angehängt und alle Haltepunkte oder Ausnahmen werden in Visual Studio angezeigt.
quelle
Öffnen Sie in Nunit 3.0.1 (ich verwende VS2013) über das Hauptmenü> Test> Windows> Test Explorer. Klicken Sie dann im "Test Explorer" mit der rechten Maustaste auf den Testfall. Möglicherweise wird Folgendes angezeigt:
Hoffe das hilft.
quelle
Installieren Sie TestDriven.NET , ein Plugin für Visual Studio
Von dort aus können Sie mit der rechten Maustaste auf Ihre Unit-Test-Assembly klicken und auf Tests ausführen klicken, um die gesamte Suite auszuführen. Klicken Sie mit der rechten Maustaste auf eine TestFixture-Klasse, um nur die Tests in dieser Klasse auszuführen, oder klicken Sie mit der rechten Maustaste auf eine Testmethode, um nur diese Methode auszuführen.
Sie haben auch die Möglichkeit, mit Debugger zu testen, wenn Sie im Debug-Modus einen Haltepunkt für Ihre Tests festlegen müssen.
quelle
Probieren Sie NUnitit aus - ein Open Source Visual Studio-Add-In zum Debuggen von NUnit-Testfällen
HomePage - http://nunitit.codeplex.com/
quelle
Entfernen Sie ProjectTypeGuids aus der Projektdatei.
quelle
Jetzt mit Bildern:
File -> Open Project
Wählen Sie Ihren Test
.dll
aus dem Ordner bin (C:\......\[SolutionFolder][ProjectFolder]\bin\Debug\xxxxTests.dll
)Wechseln Sie zu Visual Studio
Debug -> Attach to process
(Das Fenster "An Prozess anhängen" wird geöffnet.)Scrollen Sie in der Liste nach unten und wählen Sie aus
nunit-agent.exe
und klicken Sie dann aufAttach
Zu diesem Zeitpunkt sollten die Haltepunkte in Ihren Tests reif rot werden (von hohl).
Klicken Sie
Run
aufNunit Gui
und Sie sollten Ihren Haltepunkt erreichen ...Hoffe das spart dir etwas Zeit.
quelle
Wenn Sie die Konsole / oder GUI zum Laufen bringen können, Ihre Haltepunkte jedoch nicht erreicht werden, liegt dies möglicherweise daran, dass auf Ihrer App eine andere .NET-Laufzeit als auf NUnit ausgeführt wird. Überprüfen Sie, ob in Ihrer nunit-console.exe.config / nunit.exe.config die Laufzeit angegeben ist. (Die Konfigurationen befinden sich im selben Verzeichnis wie die der nunit-Exe.) Geben Sie die Laufzeit über den Startknoten an:
quelle
Wenn der Projektpfad Leerzeichen enthält, z. B. "Neues Projekt" im Pfad,
<path>\bin\Debug\New Project\Quotes.Domain.Tests.dll
schließen Sie den Projektpfad Startoption -> Befehlszeilenargumente in doppelte Anführungszeichen ein.Ich habe viel Zeit damit verbracht, dies herauszufinden.
quelle
In Bezug auf das, was Herr Patrick McDonald gesagt hat
Ich habe versucht, mich für meine Testklassenbibliothek zu bewerben, habe jedoch einen Fehler bezüglich des Pfads festgestellt. Daher habe ich versucht, die 'Befehlszeilenargumente' zu entfernen. Zum Glück hat dies gut und wie erwartet funktioniert.
quelle
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 mehrmals zu benutzen. Sie können die persönliche Version zu Bewertungszwecken gemäß der Lizenz unter http://testdriven.net/purchase_licenses.aspx herunterladen .
quelle
Ich habe den gleichen Fehler mit MSTest erhalten. Ich stellte fest, dass im Testausgabefenster einige der Tests doppelte IDs hatten und nicht geladen werden konnten. Ich habe alle doppelten Tests entfernt und konnte die Tests jetzt ausführen, als ich das Projekt startete.
quelle
Es gibt jetzt auch eine Erweiterung "Visual NUnit", mit der Sie die Tests in Visual Studio ausführen können, ähnlich wie bei den integrierten Testframework-Handles. Überprüfen Sie es im Erweiterungsmanager.
quelle
Öffnen Sie Visual Studio ---> Ihr Projekt ---> Wählen Sie 'Eigenschaften' ---> Wählen Sie 'Debug' -> Wählen Sie 'Externes Programm starten' und legen Sie dort den Pfad Ihrer NUnit fest (zB: Externes Programm starten = C. : \ Programme \ NUnit 2.6.2 \ bin \ nunit.exe) ----> Speichern
Nachdem Sie dies eingestellt haben, klicken Sie einfach auf Debuggen
quelle
Für mich bestand die Lösung darin, die Nunit-Konfigurationsdatei anzupassen. Um nunit mit dem 4.5-.Net-Framework und der x64-Build-Option zu verwenden, musste ich dem Start-Tag eine Zeile hinzufügen (unterstützte Laufzeitversion).
Danach konnte ich mit der rechten Maustaste auf Testproject Debug -> Neue Instanz starten klicken. Vorher musste ich das Projekt erneut manuell an den Prozess anhängen.
Meine Debug-Eigenschaften waren 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
quelle
Überprüfen Sie, ob dies hilfreich ist. So fügen Sie NUnit in Visual Studio hinzu
(RighteousRant) Obwohl ich persönlich diesen Ansatz nicht mag. Wenn Sie einen Debugger benötigen, während Sie Ihren Code testen, ist es ein "Geruch", dass Sie nicht genug Vertrauen haben / wissen, wie Ihr Code funktioniert und den benötigen Debugger, um Ihnen das zu sagen. TDD sollte Sie von der Notwendigkeit eines Debuggers befreien, wenn dies richtig gemacht wird. Verwenden Sie "Debugger an NUNit anhängen" nur in seltenen Fällen oder wenn Sie den Code einer anderen Person eingeben.
quelle