4 votes

Nunit - exe de test

J'ai une solution dans Visual Studio avec deux projets. Un projet normal et un projet 'test' pour les tests NUnit. J'ai une référence dans le projet de test vers le projet normal. J'ai essayé d'ajouter des tests et de les exécuter avec le NUnit GUI, mais j'obtiens une erreur disant qu'il ne peut pas trouver la 'dll' du projet 'normal' (je suppose pour obtenir les méthodes ?). Le problème est que le projet 'normal' n'est pas une bibliothèque de classes, c'est un exécutable, donc le bin/Debug du projet de test a normalproject.exe au lieu de normalproject.dll.

Comment faire pour que NUnit fonctionne avec cette configuration ? Je serais même reconnaissant d'un lien vers un tutoriel qui a ce genre de configuration, les recherches sur Google n'ont rien donné jusqu'à présent.

Le code d'erreur réel que j'obtiens est :

Achievement.Tests.Achievement.BruiserTest.CheckNameAndDescription : System.BadImageFormatException : Impossible de charger le fichier ou l'assemblage 'Achievement, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' ou l'une de ses dépendances. Une tentative a été faite pour charger un programme avec un format incorrect.

5voto

JCH2k Points 170

J'ai eu le même problème !

Solution : NUnit s'installe avec un binaire x86 et un binaire x64. Dans le menu de démarrage, seul le programme x64 par défaut est affiché. Mon projet est ciblé sur x86 en raison de certaines bibliothèques natives que j'utilise, j'ai donc dû démarrer manuellement le programme x64. nunit-x86.exe de C:\Program Files (x86)\NUnit 2.6.3\bin et ça a marché !

3voto

Joe Doyle Points 4298

Check est l'accessibilité des classes que vous voulez tester. Elles doivent être marquées comme publiques, sinon votre projet de test ne sera pas en mesure de les voir pour les charger.

Une autre alternative pour rendre vos classes publiques est d'utiliser l'attribut InternalsVisibleTo dans votre EXE et d'accorder l'accès à la DLL de votre projet de test. Au lieu de les rendre publiques, il vous suffit de les marquer comme internes.

Dans le fichier AssemblyInfo.cs de l'EXE :

[assembly: InternalsVisibleTo( "Project.Tests" )]  

Il n'y a aucun problème à référencer un EXE au lieu d'une DLL pour vos tests (techniquement parlant, l'architecture des applications est une autre question).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X