2010-06-07 26 views
3

J'ai un projet de test pour un service web et, quand j'exécute des tests en mode debug, tout fonctionne bien. Cependant, quand je viens d'exécuter des tests, j'obtiens l'erreur suivante, pour un ensemble référencé que je tente d'obtenir une couverture de code:Couverture de code MSTest

méthode WebServiceTest.wstest.MyClassInitialize Initialisation classe a lancé une exception. System.IO.FileLoadException: System.IO.FileLoadException: Impossible de charger le fichier ou l'assembly 'TestAssembly, Version = 1.0.0.0, Culture = neutre, PublicKeyToken = 57f286581e1d278a' ou l'une de ses dépendances. La validation du nom fort a échoué. (Exception de HRESULT: 0x8013141A) ---> System.Security.SecurityException: Échec de la validation du nom fort. (Exception de HRESULT: 0x8013141A). Tout ce que j'ai trouvé dit d'enregistrer TestAssembly dans GAC. Est-ce que je devrais faire? Pourquoi fonctionne-t-il en mode débogage? Merci

Répondre

5

J'ai eu le même problème, et le lien ci-dessous m'a aidé ...

http://weblogs.asp.net/soever/archive/2005/07/23/420338.aspx

VS.NET 2005: couverture de code pour les assemblées signées Je travaille actuellement sur un application en utilisant VS.NET 2005, et parce que tous les outils TDD comme les tests unitaires et la couverture de code sont disponibles, j'ai commencé à les utiliser.

Quand j'ai commencé la couverture de code sur ma demande signée j'ai eu l'exception suivante:

Méthode d'essai X a lancé exception: System.IO.FileLoadException: Impossible de charger le fichier ou l'assembly « Y, Version = 1.0.0.0, Culture = neutre, PublicKeyToken = Z 'ou l'une de ses dépendances. HRESULT: 0x8013141A La validation du nom fort a échoué. ---> System.Security.SecurityException: Exception de HRESULT: 0x8013141A La validation du nom fort a échoué à X.

Pas si étrange si vous y pensez. L'assemblage est signé, la couverture de code nécessite des instruments de codage, signifie des modifications de l'assemblage, entraînant un assemblage incorrect, donc la validation a échoué.

La solution consiste à démissionner de l'ensemble après l'instrumentation.

Si vous ouvrez le fichier localtestrun.testrunconfig (ou quelque chose de similaire) dans vos éléments de solution (double-cliquez dessus), vous pouvez activer la démission dans la section Couverture de code. Cela résout le problème.

+0

A fait un rêve. +1 –

4

Il est également possible de désactiver simplement tout assemblage signé vérifier sur une machine particulière en exécutant:

sn.exe -Vr * 

Utilisation avec toutefois, les soins, car cela ouvre une faille de sécurité. Nous l'utilisons sur notre machine virtuelle interne qui mesure la couverture pour nous. Jetez un oeil à l'utilisation de sn.exe car il est possible de réduire la portée de cette commande.

+1

Je pense que vous pouvez être spécifique à l'assembly particulier qui a jeté l'erreur - dans l'exemple de la question: sn.exe -Vr *, 57f286581e1d278a –

0

Je travaille avec VS.Net Ultime 2012

et cette solution m'a aidé:

Faites un clic droit sur le test Projet-> Propriétés-> Construire tab-> Générer le commutateur assembly de sérialisation à décalant> fait