2009-01-21 5 views
16

Ok, voici donc la description complète du problème que je vais avoir:La liaison d'assemblage de réacheminement fonctionne-t-elle pour les tests unitaires avec un testeur?

Je suis en train d'utiliser NUnit ExtensionMethods mais chaque fois que je lance un test contenant l'une des méthodes d'extension à l'aide TestDriven.Net ou si je viens à plat essayer pour charger l'assembly en utilisant une interface graphique de test-runner (Icarus ou NUnit), j'obtiens une exception FileNotFoundException.

Frapper la tête contre un mur et de creuser plus loin, je pense que je sais ce qui ne va pas. réflecteur Cue et yep, je peux voir que NUnit.Framework> ExtensionMethods.dll a une référence à

nunit.framework, Version=2.4.6.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77 

et ma version actuelle de nunit que je suis compris est

nunit.framework, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77 

Maintenant, je n'ai jamais re-direction de montage utilisé avant, mais il semble que ce serait une simple question d'ajouter un App.Config avec les lignes suivantes:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
      <dependentAssembly> 
       <assemblyIdentity 
        name="nunit.framework.dll" 
        publicKeyToken="96d09a1eb7f44a77" /> 
       <bindingRedirect oldVersion="2.4.6.0" newVersion="2.4.8.0" /> 
      </dependentAssembly> 
     </assemblyBinding> 
    </runtime> 
</configuration> 

et je crois comprendre que les appels à la version 2.4.6 (WHIC h n'existe pas sur cette machine) devrait automatiquement rediriger vers la version 2.4.8.

Cela ne fonctionne pas cependant, et je suppose (mais je ne l'ai pas encore confirmé) que c'est parce que les coureurs de test ne lisent pas automatiquement les fichiers app.config.

Donc, ma question de sont les suivantes:

  1. Ai-je raison dans mon diagnostic du problème ?

  2. La redirection d'ensemble est-elle la solution appropriée et est-ce que je fais est-ce exact? Comment puis-je faire fonctionner ceci avec le testeur ?

Répondre

15

Cela devrait fonctionner si vous mettez les paramètres de configuration dans le bon fichier .config. Lequel dépend de l'environnement que vous utilisez pour exécuter les tests, mais NUnit et TestDriven.NET doivent tous deux prendre en charge l'assemblage de test .dll.config.
Comme c'est la solution appropriée, je dirais oui. La seule autre possibilité consisterait à utiliser un fichier de stratégie d'éditeur, mais vous auriez besoin de la clé privée utilisée pour compiler NUnit.

+0

Merci beaucoup, jamais entendu parler de testassembly.dll.config mais c'est ce que je cherchais. Dans ce cas, les Extensions NUnit sont open source et seulement environ 70 lignes de code, donc je viens de l'ouvrir et de le recompiler avec ma version. Mais c'est une bonne connaissance pour la prochaine fois. –

+4

@GeorgeMauer "testassembly.dll.config" est ce que le fichier App.config standard est transformé en temps de compilation. Pour autant que je sache, la config est chargée par le framework .NET par défaut et NUnit/TestDriven.NET ne le sait même pas spécifiquement – Schneider

+2

@Schneider: AFAIK cela n'est vrai que pour les fichiers * .exe.config, pas pour *. Fichiers dll.config, ceux-ci doivent être explicitement spécifiés lors de la création de l'AppDomain. – csgero