Nunit: Impossible d'exécuter les tests unitaires de NUnit avec le lanceur de tests de ReSharper

Créé le 19 déc. 2015  ·  11Commentaires  ·  Source: nunit/nunit

J'obtiens cette erreur :

Unit Test Runner n'a pas réussi à exécuter les tests

NUnit.Core.UnsupportedFrameworkException : le chargement de l'assembly nunit.framework.tests a été ignoré car il fait référence à une version non prise en charge de nunit.framework, 3.0.5831.264

http://i.imgur.com/rSuicsx.png

Y a-t-il un moyen de le faire fonctionner? Ou s'agit-il simplement d'un scénario non pris en charge ? Pour le moment, je dois exécuter les tests à partir de la ligne de commande, et lorsque j'ai besoin de déboguer un test, j'ajoute un Debugger.Launch au début. Pas très pratique...

notabug

Commentaire le plus utile

Aller dans l'écran Options de ReSharper v10, sous Outils | Tests unitaires | NUnit, il existe un paramètre d'option pour "Quand utiliser le lanceur de test NUnit 3". Définir ce paramètre sur "Toujours" a résolu le problème pour moi. Le message d'erreur ci-dessus n'apparaît plus après cette modification.

Tous les 11 commentaires

Désolé, c'est juste le fait que la version de Resharper que vous utilisez n'a pas été mise à jour pour fonctionner avec NUnit 3. pour exécuter des tests faisant référence à NUnit 3.

Si vous souhaitez déboguer vos tests, vous pouvez basculer votre projet de test pour exécuter nunit-console avec la ligne de commande --inprocess afin que vous puissiez simplement déboguer vos tests directement à partir de Visual Studio.

Désolé, c'est juste le fait que la version de Resharper que vous utilisez n'a pas été mise à jour pour fonctionner avec NUnit 3.

Non, j'utilise la dernière version stable de ReSharper (10.0.1), qui prend en charge NUnit 3. Je peux exécuter des tests NUnit 3 dans d'autres projets... c'est juste dans NUnit lui-même que cela ne fonctionne pas.

Si vous souhaitez déboguer vos tests, vous pouvez basculer votre projet de test pour exécuter nunit-console avec la ligne de commande --inprocess afin que vous puissiez simplement déboguer vos tests directement à partir de Visual Studio.

J'ai essayé ça, mais il est resté bloqué à un moment donné et n'a jamais atteint mes points d'arrêt...

Votre stacktrace affiche des méthodes qui n'existent que dans l'assembly principal NUnit 2.6.4. Lorsque le noyau 2.6.4 détecte que vous lui demandez de charger un assembly 3.0, il affiche cette exception. Resharper, pour une raison quelconque, essaie d'exécuter les tests à l'aide des assemblys NUnit 2.6.4.

En ce qui concerne le débogage, lorsque vous travaillez sur NUnit, vous devez toujours exécuter des tests exclusivement en utilisant les propres composants de NUnit. Sinon, vous ne pouvez jamais être certain que l'outil tiers fonctionnera correctement.

En fait, il est absolument garanti que Resharper ne fonctionne pas avec la version de NUnit que vous utilisez car vos modifications en ont fait une version plus récente que toutes celles que nous avons encore publiées ! Il est probable que reharper, s'il prend en charge NUnit 3, utilise des assemblys de version qui sont des versions plus anciennes des mêmes que vous modifiez.

En fait, il est absolument garanti que Resharper ne fonctionne pas avec la version de NUnit que vous utilisez car vos modifications en ont fait une version plus récente que toutes celles que nous avons encore publiées ! Il est probable que reharper, s'il prend en charge NUnit 3, utilise des assemblys de version qui sont des versions plus anciennes des mêmes que vous modifiez.

OK, ce n'est donc pas un scénario pris en charge. Merci pour l'explication.

À un moment donné, vous devriez pouvoir exécuter des tests NUnit 3 dans Resharper, mais je ne sais pas quel est l'état actuel du coureur Resharper. Le fait qu'il essaie d'exécuter des tests NUnit 3 à l'aide d'assemblys NUnit 2 indique que leur programme d'exécution ne fonctionne pas correctement.

Vous devez le signaler à JetBrains.

À un moment donné, vous devriez pouvoir exécuter des tests NUnit 3 dans Resharper, mais je ne sais pas quel est l'état actuel du coureur Resharper.

R# 10.0.2 prend en charge la version finale de NUnit 3, mais il est toujours incapable d'exécuter les tests dans la solution NUnit (probablement pour la raison expliquée par @CharliePoole).

J'ai aussi essayé de forcer l'utilisation du nunit.engine.dll du dossier bin , mais j'obtiens un NullReferenceException :

à NUnit.Engine.Internal.CecilExtensions.GetAttributes(TypeDefinition type, String fullName) dans D:\Docs\GitHub\nunit\src\NUnitEngine\nnit.engine\Internal\CecilExtensions.cs:line 53

Comme attrType est déjà utilisé avec succès quelques lignes plus tôt, il semble que Resolve() renvoie null. Nous devons vérifier cela partout où nous l'utilisons. Voir le numéro #1009.

Comme attrType est déjà utilisé avec succès quelques lignes plus tôt, il semble que Resolve() renvoie null. Nous devons vérifier cela partout où nous l'utilisons. Voir le numéro #1009.

En effet, Resolve() renvoie null. J'ai essayé de remplacer ceci :

                attrType = attrType.Resolve().BaseType;

avec ça:

                var definition = attrType.Resolve();
                attrType = definition != null ? definition.BaseType : null;

Maintenant, je peux exécuter les tests, mais beaucoup d'entre eux ne sont pas concluants ("test not run"), et parfois le runner affiche une autre erreur ( TargetInvocationException ) qui met fin à la session de test. Même lorsque cette erreur ne se produit pas, la session de test ne se termine jamais (toujours dans le statut "en cours d'exécution"), même s'il ne semble pas y avoir de test en cours. Aucune idée s'il s'agit d'un bogue dans NUnit ou dans ReSharper...

Il peut ne pas être possible de remplacer avec succès la version du moteur utilisé par R#. En interne, nous offrons l'option d'une version privée, celle que le coureur trouve dans son propre répertoire. Les gens peuvent spécifier cela s'ils utilisent le moteur d'une manière qui ne garantit pas la compatibilité descendante ou s'ils ne veulent simplement pas s'appuyer sur une version plus récente fonctionnant avec leur coureur. Cependant, il n'y a aucun moyen de savoir si R# fait cela, à part leur demander.

Aller dans l'écran Options de ReSharper v10, sous Outils | Tests unitaires | NUnit, il existe un paramètre d'option pour "Quand utiliser le lanceur de test NUnit 3". Définir ce paramètre sur "Toujours" a résolu le problème pour moi. Le message d'erreur ci-dessus n'apparaît plus après cette modification.

Aller dans l'écran Options de ReSharper v10, sous Outils | Tests unitaires | NUnit, il existe un paramètre d'option pour "Quand utiliser le lanceur de test NUnit 3". Définir ce paramètre sur "Toujours" a résolu le problème pour moi.

Fonctionne également pour les tests F# . Je suis content. Merci.

Cette page vous a été utile?
0 / 5 - 0 notes