J'ai récemment construit un framework de test pour un peu de C # sur lequel j'ai travaillé. J'ai installé NUnit et un nouveau projet dans mon espace de travail pour tester le composant. Tout fonctionne bien si je charge mes tests unitaires depuis Nunit (v2.4), mais j'ai atteint le point où il serait vraiment utile de fonctionner en mode débogage et de définir des points d'arrêt.
J'ai essayé les suggestions de plusieurs guides qui suggèrent toutes de modifier les propriétés 'Debug' du projet test:
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
J'utilise la version console ici, mais j'ai également essayé d'appeler l'interface graphique. Les deux me donnent la même erreur lorsque j'essaie de démarrer le débogage:
Cannot start test project 'TestDSP' because the project does not contain any tests.
Est-ce parce que je charge normalement\DSP.nunit dans l'interface graphique Nunit et c'est là que se déroulent les tests?
Je commence à penser que le problème est peut-être que VS veut exécuter son propre framework de test et c'est pourquoi il ne parvient pas à trouver les tests NUnit?
Edit: Pour ceux qui posent des questions sur les appareils de test, l’un de mes fichiers .cs du projet TestDSP ressemble à peu près à ceci:
namespace Some.TestNamespace
{
// Testing framework includes
using NUnit.Framework;
[TestFixture]
public class FirFilterTest
{
[Test]
public void Test01_ConstructorTest()
{
...some tests...
}
}
}
... Je suis assez nouveau pour C # et le framework de test NUnit, il est donc tout à fait possible que j'ai manqué des informations cruciales ;-)
Solution finale: Le gros problème était le projet que j'avais utilisé. Si vous choisissez Other Languages -> Visual C# -> Test -> Test Project
... lorsque vous choisissez le type de projet, Visual Studio essaiera d'utiliser son propre framework de test, pour autant que je sache. Vous devriez plutôt choisir un projet de bibliothèque normal C # et les instructions de la réponse sélectionnée fonctionneront.
J'utilise la même technique que vous essayez Jon, sans l'indicateur/Assembly, c'est-à-dire.
Start External Program: C:\Program Files\NUnit 2.4.8\bin\nunit.exe
Command line arguments: "<path>\bin\Debug\Quotes.Domain.Tests.dll"
TestDSP.dll contient-il tous vos TestFixtures?
Comme mon projet de test n’est pas le projet de démarrage de la solution, j’exécute mes tests en cliquant avec le bouton droit de la souris sur le projet de test et en choisissant Déboguer -> Démarrer une nouvelle instance.
Lorsque je dois déboguer mes tests NUnit, je me connecte simplement à l'application graphique NUnit nunit-agent.exe
en utilisant "Debug | Attach to Process" et lancez les tests à partir de l'interface graphique. Tous les points d'arrêt de mes tests (ou le code qu'ils testent) sont atteints. Est-ce que je comprends mal votre question ou est-ce que cela fonctionnera pour vous?
Supprimez simplement la ligne qui ressemble à
<ProjectTypeGuids>
{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
</ProjectTypeGuids>
à partir de votre fichier de projet. Cette ligne indique en gros à VS.Net qu’il s’agit d’un projet test, ainsi le "Impossible de démarrer le projet test". Pour votre information, le premier guide dit "c’est un test", le deuxième indique "c’est C #". Pour plus d'informations sur ces guides: http://www.mztools.com/Articles/2008/MZ2008017.aspx
En plus de la réponse fournie par @Justin, voici quelques détails supplémentaires sur NUnit 2.6.
À l’aide de NUnit 2.6, associez nunit.exe ou nunit-console.exe et PAS l’agent. La configuration notée par @Justin est légèrement différente. Vous trouverez ci-dessous un exemple tiré de nunit.exe.config (identique à 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>
Pour le projet de test .NET 4, pour obtenir des points d'arrêt à toucher, vous devrez commenter ou supprimer la ligne v2.0 comme le suggère le commentaire. Une fois que j'ai fait cela, j'ai pu déboguer le projet de test .NET 4.0.
Si vous utilisez NUnit 2.4 ou une version plus récente, vous pouvez insérer le code suivant dans votre classe SetUpFixture
. (Vous pouvez le faire avec les anciennes versions, mais vous aurez besoin de faire n'importe quel équivalent du SetUpFixture
ou de le copier dans le test lui-même.)
[SetUpFixture]
public class SetupFixtureClass
{
[SetUp]
public void StartTesting()
{
System.Diagnostics.Debugger.Launch();
}
}
Qu'est-ce que Debugger.Launch()
provoque l'affichage de la boîte de dialogue suivante lorsque vous cliquez sur Exécuter dans NUnit.
Vous choisissez ensuite votre instance en cours d'exécution de visual studio avec votre projet ouvert (la deuxième de ma capture d'écran), puis le débogueur sera attaché et tous les points d'arrêt ou exceptions apparaîtront dans Visual Studio.
Installer TestDriven.NET , qui est un plugin pour Visual Studio
À partir de là, vous pouvez cliquer avec le bouton droit de la souris sur votre assemblage de test unitaire et cliquer sur Exécuter les tests pour exécuter la suite complète, faire un clic droit sur une classe TestFixture pour exécuter uniquement les tests de cette classe ou un clic droit sur une méthode Test pour exécuter uniquement cette méthode.
Vous avez également la possibilité de tester avec le débogueur, si vous devez insérer des points d'arrêt dans vos tests en mode débogage.
Try NUnitit - Add-in Visual Studio pour le débogage Open Source open source Cas de test
HomePage - http://nunitit.codeplex.com/
Supprimez ProjectTypeGuids du fichier de projet.
Maintenant avec des images:
File -> Open Project
Sélectionnez votre test .dll
du dossier bin (C:\......\[SolutionFolder][ProjectFolder]\bin\Debug\xxxxTests.dll
)
Allez à Visual Studio Debug -> Attach to process
_ (La fenêtre d’attachement au processus s’ouvrira)
Dans la liste, faites défiler et sélectionnez nunit-agent.exe
puis cliquez sur Attach
À ce stade, les points d'arrêt de vos tests doivent virer au rouge mûr (en creux).
Cliquez sur Run
sur Nunit Gui
et vous devriez obtenir votre point d'arrêt frappé ...
J'espère que cela vous fait gagner du temps.
Si vous êtes en mesure de faire fonctionner la console/ou l'interface graphique, mais que vos points d'arrêt ne sont pas touchés, il se peut que votre application exécute un environnement d'exécution .NET différent de celui de NUnit. Vérifiez si votre runtime est spécifié dans le fichier nunit-console.exe.config/nunit.exe.config (les configurations résident dans le même répertoire que le fichier EXE de nunit).
<configuration>
<startup>
<supportedRuntime version="4.0" />
</startup>
Si le chemin du projet contient des espaces, par ex. "Nouveau projet" dans le chemin <path>\bin\Debug\New Project\Quotes.Domain.Tests.dll
puis placez le chemin du projet Option de démarrage -> Arguments de la ligne de commande entre guillemets.
J'ai passé beaucoup de temps à comprendre cela.
À propos de ce que M. Patrick McDonald a dit
Comme mon projet de test n’est pas le projet de démarrage de la solution, j’exécute mes tests en cliquant avec le bouton droit de la souris sur le projet de test et en choisissant Déboguer -> Démarrer une nouvelle instance.
J'ai essayé d'appliquer pour ma bibliothèque de classes de test mais une erreur s'est produite concernant le chemin. J'ai donc essayé de supprimer les "arguments de ligne de commande" et, heureusement, cela a fonctionné correctement et comme prévu.
Pour moi, la solution consistait à adapter le fichier de configuration nunit. Pour utiliser nunit avec le framework 4.5-.Net et l'option de compilation x64, je devais ajouter une ligne à la balise de démarrage (version d'exécution prise en charge).
<startup useLegacyV2RuntimeActivationPolicy="true">
<!-- Comment out the next line to force use of .NET 4.0 -->
<supportedRuntime version="v4.0.30319" />
</startup>
Ensuite, je pourrais commencer par cliquer avec le bouton droit de la souris sur Testproject Debug -> Start new instance. Avant, je devais à nouveau attacher manuellement le projet au processus.
Mes propriétés de débogage étaient, C:\Program Files (x86)\NUnit 2.6.4\bin\nunit.exe avec l'argument de l'emplacement du fichier .dll à tester.
Plus d'informations: non à tester avec .NET 4.
Il existe également une extension maintenant appelée "Visual NUnit" qui vous permettra d’exécuter les tests à partir de Visual studio, à l’instar du descripteur de structure de test. Découvrez-le dans le gestionnaire d'extensions.
J'ai eu la même erreur avec MSTest. J'ai trouvé que dans la fenêtre Test Output, certains tests avaient des ID en double et ne pouvaient pas être chargés. J'ai supprimé tous les tests en double et je pouvais maintenant exécuter les tests lorsque je démarrais le projet.
Ouvrez Visual Studio ---> votre projet ---> Sélectionnez "Propriétés" ---> Sélectionnez "Débogage" -> Sélectionnez "Démarrer le programme externe" et définissez le chemin de votre NUnit (Ex: Démarrer le programme externe = C :\Program Files\NUnit 2.6.2\bin\nunit.exe) ----> Enregistrer
Après avoir défini ceci, cliquez simplement sur Debug
On dirait que vous essayez d'utiliser la mauvaise bibliothèque. NUnit ne peut démarrer que si la dll que vous utilisez contient TestFixtures.
+1 sur TestDriven.Net. J'ai eu la chance de l'utiliser plusieurs fois. Vous pouvez télécharger la version personnelle à des fins d’évaluation conformément à la licence sur le site http://testdriven.net/purchase_licenses.aspx .