NUnit n'exécute pas de code Visual Studio 2010

98

J'essaye de charger une dll bêta de Visual Studio 2010 dans l'interface graphique de NUnit. J'obtiens une erreur contextuelle.

Cet assembly est généré par un runtime plus récent que le runtime actuellement chargé et ne peut pas être chargé. Vous essayez peut-être de charger une génération d'assembly avec une version ultérieure du CLR à la version sous laquelle NUnit est en cours d'exécution.

Comment forcer un exécutable à s'exécuter sous .NET 4?

Balle
la source
Cette question concerne-t-elle réellement le code VS 2010 ou .NET 4? - Je recherche un outil qui me permette d'exécuter des tests NUNIT sur Visual Studio 2010, et cette question était trompeuse.
Nicolas Irisarri
@Nicolas - cela fait référence à .NET 4.0.
Daniel A. White

Réponses:

132

J'ai téléchargé la source NUnit 2.5 et ouvert la solution VS2008 dans la version bêta de VS2010. Une fois la conversion terminée, j'ai ouvert tous les projets et changé le cadre cible pour tous les projets en ".NET Framework 4.0". J'ai ensuite construit la solution sans aucune erreur. Je peux maintenant utiliser l'application NUnit GUI pour exécuter des tests créés pour .NET 4.0. Je n'ai pas fait de tests exhaustifs de cette version, il peut donc y avoir des problèmes, mais pour mes besoins, cela fonctionne bien.

Mise à jour: il n'est pas nécessaire de reconstruire NUnit. J'ai découvert que si vous ajoutez ce qui suit au fichier de configuration NUnit approprié, vous pouvez exécuter une dll de test construite pour .NET 4.0.

Sous <configuration>, ajoutez:

<startup>
  <supportedRuntime version="v4.0.30319" />
</startup>

et sous <runtime> ajoutez:

<loadFromRemoteSources enabled="true" />
Charles Cook
la source
3
Ok, les mises à jour de configuration le font fonctionner, mais j'ai dû utiliser version = "v4.0.21006" pour ma balise requiredRuntime.
mkmurray
4
BTW, l'emplacement par défaut du fichier de configuration est: C: \ Program Files \ NUnit 2.5.3 \ bin \ net-2.0 \ nunit.exe.config L'ajout de ces options à la configuration a fonctionné pour moi.
Brad Irby
2
Impossible de faire fonctionner cela avec le dernier Nunit + .net4 RTM. J'ai ajouté les entrées proposées à nunit-console.exe.config mais je reçois: System.ArgumentException: Le cadre net 4.0 n'est pas disponible Essayé avec les versions ci - dessus + v4.0.30319 Je suis en cours d' exécution 2008 R2 x64
Andreas Öhlund
1
Pour le coureur de console, modifiez les configurations comme indiqué, mais en utilisant v4.0.30319 pour la version RTM de .NET 4.0. Aussi, exécutez-le avec cet argument de ligne de commande: /framework=4.0.30319
Lance Fisher
1
J'ai eu de la chance en utilisant l'option de ligne de commande /framework:net-4.0.30319 au lieu de changer la configuration. Cela a été utile pour que je puisse contrôler quelles applications utilisaient le CLR 4.0 et lesquelles ne le faisaient pas.
Kevin Crowell
25

Avec la sortie de .NET 4, j'ai utilisé

<supportedRuntime version="v4.0.30319" />

dans le NUnit 2.5.4 exe.config au lieu de requiredRuntime, et la balise loadFromRemoteResources comme indiqué ci-dessus et tout a bien fonctionné. Merci!

pélazem
la source
17

Vous n'avez à modifier aucun fichier

ouvrez simplement ce fichier et tout fonctionnera très bien

C: \ Program Files (x86) \ NUnit 2.5.10 \ bin \ net-2.0 \ nunit-x86.exe

sombre
la source
Merci - a résolu mon cas. Vous devez utiliser la version x86 de nunit pour les tests unitaires compilés x86. Les avertissements de version CLR étaient un hareng rouge. Utilisation de nunit 2.5.10.
Nigel Touch
Même chose ici, doit en quelque sorte utiliser la version x86
gavin
12

Dans NUnit 2.5.5, vous pouvez spécifier dans la ligne de commande l'option /framework=net-4.0 et il est compatible avec les nouveaux assemblys générés avec la version du dernier VS2010.

Cristian T
la source
3
Je n'ai jamais réussi à faire fonctionner cela. J'ai vu des gens utiliser /framework:net-4.0.30319 et toutes sortes d'autres variantes. Ce serait bien s'ils incluaient les options réelles sur les documents du site.
Jason Short
2
@Jason Il semble que cela ne fonctionne que sur la version console. La version GUI n'a pas cette option.
Roman Starkov
+1 pour avoir mentionné que cela fonctionne à partir de la version 2.5.5! J'ai eu NUnit qui lançait ArgumentExceptions et NullReferenceExceptions sur l'une de mes machines, et il s'est avéré que c'était à cause de la version 2.5.0.
realMarkusSchmidt
2

La solution proposée fonctionnait très bien pour faire fonctionner NUnit. Malheureusement, lorsque je suis arrivé à mon étape de couverture de code, NCover a commencé à me donner:

Processus profilé terminé. Connexion du profileur non établie.

La meilleure solution que j'ai trouvée à cela était d'utiliser simplement la version "-x86" de NUnit avec NCover:

NCover.Console.exe nunit-console-x86.exe - paramètres supplémentaires--

Fonctionne maintenant.

Scott Marlowe
la source
1
Merci pour cela, je rencontrais le même problème, votre correctif l'a résolu!
CubanX
2

Pour trouver votre version .net 4 à partir de Visual [C # 2010 Express, ou quel que soit le modèle], accédez à «À propos» de l'application Visual sous l'élément d'aide du menu. Il doit apparaître comme la version sous la ligne Microsoft .NET Framework en haut à droite de la fenêtre.

Dan Paden
la source
1

J'ai rencontré le même message d'erreur lors de l'exécution de NUnit 2.4.8. Comme je n'avais pas mis à niveau depuis un certain temps, j'ai installé le NUnit actuel (v2.5.9) et j'ai constaté qu'il prend désormais en charge les assemblages VS2010. Donc, si vous avez récemment rencontré cette erreur, vérifiez votre version de NUnit : à partir de décembre 2010 (environ), la seule chose que vous devez faire est de mettre à niveau NUnit.

Michael Sorens
la source
J'utilise NUnit 2.5.9 téléchargé le 15/03/2011 et ce problème ne disparaîtra pas pour moi. Même si j'essaye la solution proposée
DrLazer
1

À partir de NUnit 2.5.10, vous pouvez activer la prise en charge de Visual Studio dans le runner GUI:

Outils-> Paramètres-> Prise en charge IDE

Après cela, j'ai pu m'attacher avec succès au processus nunit-agent.exe qui exécute votre assembly dans un domaine d'application .NET 4.0

Crackerjack
la source
0

Si vous rencontrez ce problème après la mise à niveau vers nunit 2.5.5, vous devrez mettre à niveau nant vers la dernière version pour moi, c'était .91 alpha.

Adam
la source
0

J'ai trouvé utile de commencer à partir du modèle d' application NUnit . Il prend en charge VS C # Express, permet les tests de débogage et contient NUnit précompilé pour .NET 4.0. Merci à l'auteur, le nouveau projet de test est prêt en un seul clic.

Ernest
la source