Comment pouvez-vous utiliser “externe” des fichiers de configuration (c'est à dire avec configSource) avec un MSTest projet de tests unitaires?

Pour des raisons de simplicité, j'ai généralement la division d'un lot de ma configuration (c'est à dire le contenu de l'application.config et web.config) en séparer .les fichiers de configuration, et ensuite de référence de fichier de configuration principal à l'aide de la "configSource' attribut. Par exemple:

<appSettings configSource="appSettings.config"/>

puis de placer toutes les paires clé/valeur dans ce appSettings.fichier de configuration au lieu d'avoir cette ligne dans le fichier de configuration principal:

<appSettings>
    <add key="FirstKey" value="FirstValue"/>
    <add key="SecondKey" value="SecondValue"/>
    ...
</appSettings>

Généralement, cela fonctionne très bien avec l'application elle-même, mais je rencontre des problèmes lorsque vous tentez d'écrire des tests unitaires qui, pour quelque raison que ce soit, besoin d'obtenir une certaine valeur à partir d'une section de configuration stocké dans l'un de ces fichiers externes. (Je comprends que la plupart de ces personnes ne seraient susceptibles d'être considérés comme des "tests d'intégration", comme ils dépendent de la Configuration du système, et j'ai "pure tests unitaires" ainsi, mais ce sont pas le problème. Je suis vraiment à la recherche pour vérifier que ces valeurs de configuration sont récupérées correctement et impact sur le comportement dans le bon sens).

En raison de la façon dont MSTest compile et des copies de la sortie d'obfuscation-à la recherche des dossiers qui sont différentes de chaque essai (plutôt que de le " bin " du dossier, comme vous pourriez le penser), il ne semble jamais être en mesure de trouver ces fichiers externes tandis que les tests sont en cours d'exécution. J'ai essayé de déconner avec le poste de construire des actions pour faire ce travail mais avec pas de chance. Est-il un moyen d'avoir ces fichiers externes copié dans le dossier de sortie correcte au moment de l'exécution?

OriginalL'auteur Jesse Taber | 2008-09-30