48 votes

L'exécution des tests NUnit via Resharper 8 échoue lors du passage d'un projet à l'autre à cause d'AppDomain

J'ai récemment mis à jour Resharper 8, et lorsque j'ai essayé d'exécuter une suite de projets. Ces tests contiennent deux suites de tests d'intégration qui utilisent tous deux IISExpress pour exécuter un site web, faire des requêtes web et vérifier les réponses.

Leur exécution isolée est réussie, et l'exécution de tous les tests aurait auparavant été couronnée de succès. Cependant, après la mise à jour, la deuxième série de tests à exécuter échoue.

L'enquête a révélé que le AppDomain.CurrentDomain.BaseDirectory reste le premier test à exécuter au lieu de changer. Comme les tests d'intégration sont composés de deux projets, le deuxième projet échoue car il ne trouve aucun des fichiers de configuration nécessaires.

Je ne trouve aucune option permettant de désactiver ce comportement différent dans Resharper 8, qui semble être le comportement de l'application /domain:Single drapeau de l'unité. A moins de passer à Resharper 7, quelqu'un connaît-il une solution à ce problème ? Et s'agit-il d'un comportement prévu par Resharper 8 ou d'un bogue ?

55voto

Daniel Dyson Points 9913

La solution :

Avez-vous essayé dans Visual Studio d'aller dans ReSharper -> Options -> Outils -> Test unitaire ?

Changez le paramètre "Exécuter jusqu'à 1 assemblage en parallèle" pour un nombre plus élevé. J'en ai essayé un pour chaque projet de test. Le maximum est le nombre de cœurs, je pense.

Je sais que c'est contre-intuitif, mais cela a fonctionné pour moi et j'utilise AppDomain.CurrentDomain.BaseDirectory dans les tests qui échouent.

La cause Un bogue d'optimisation de la mise en cache dans ReSharper 8. Le répertoire de travail n'est pas défini correctement. Il est possible que l'exécution en parallèle crée un processus distinct pour chaque test, de sorte qu'ils ne se heurtent pas aux paramètres des autres.

Le correctif JetBrains affirme que ce problème sera corrigé dans la version 8.0.1.

Mise à jour : Il existe un nouvelle option de test unitaire ajouté en Resharper 8.1 pour tenir compte de ce scénario. Vous le trouverez dans ReSharper -> Options -> Outils -> Tests unitaires -> " Utiliser un AppDomain séparé pour chaque assemblage avec des tests.

9voto

orad Points 978

Nous constatons le même problème. Je pense qu'il s'agit d'un bogue. Voir : http://youtrack.jetbrains.com/issue/RSRP-380761

6voto

Paul Suart Points 2899

Ce problème a été corrigé dans la version 8.0.2 de Resharper : http://youtrack.jetbrains.com/issue/RSRP-374143#comment=27-572929

N'oubliez pas de cocher la nouvelle option ReSharper | Options | Outils | Test unitaire Tests unitaires | "Utiliser un AppDomain séparé pour chaque assemblage avec test" pour que cela fonctionne. cela fonctionne.

C'est-à-dire qu'il y a maintenant une nouvelle option dans les paramètres des tests unitaires.

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