2010-02-24 2 views
1

Voici la situation:tests unitaires - lorsque plusieurs projets ont tous leur propre ensemble de fichiers App_Config

J'ai une solution avec plusieurs projets de tests unitaires, ciblant chacun un ensemble spécifique dans l'application. Ces projets de test unitaire nécessitent un ensemble de fichiers App_Config * pour pouvoir être exécutés (par exemple, connectionStrings.config, appSettings.config, etc.). Quand j'exécute les tests depuis VS.NET en utilisant TD.NET ou ReSharper, comme prévu le monde est bon, quand je lance mes scripts de construction NAnt pour exécuter les tests, mon dossier de sortie de construction qui contient tous les assemblages, test assembly, etc, ne contient aucun des fichiers App_config * associés. J'ai essayé de paramétrer toutes les propriétés du fichier App_Config sur "Copier Toujours", ce qui fonctionne bien quand il y a un seul projet de test dans la solution que je construis, mais quand plusieurs projets sont tous dans la même solution et contiennent tous mêmes noms de fichiers de configuration avec des paramètres différents, le monde commence à s'effondrer.

Quelle est la meilleure façon de gérer cette situation?

Merci

+1

La meilleure façon de gérer cette situation est d'écrire les tests afin qu'ils ne dépendent pas du tout des fichiers de configuration. –

+0

Je suis d'accord avec vous Mark mais malheureusement, il s'agit d'une application héritée et son grand nombre de fichiers de configuration est étroitement lié au système – user280541

Répondre

0

renommer manuellement les fichiers app.config pour correspondre au nom de l'ensemble particulier, il va de pair avec (« assembly1.dll.config », « assembly2.dll.config », etc.). Faites cela dans les projets eux-mêmes. Cela empêchera Visual Studio de renommer les fichiers lui-même. Ensuite, copiez-les tous les dans le répertoire de sortie avec leurs noms variés individuels.

+0

Le problème ne réside pas dans le App.config lui-même (qui est correctement renommé assemblyname.config une fois compilé) c'est les fichiers de configuration associés dans le dossier App_Config qui causent les problèmes mais merci pour la tentative d'assistance – user280541

0

Dans le fichier app.config, au lieu des sections de configuration elles-mêmes, placez les références dans des fichiers distincts à l'aide de l'attribut configSource.

<appSettings configSource="Config\AppSettings.SupportTest.config" /> 
    <ConnectionConfig configSource="Config\DatabaseConnections.config" /> 
    <log4net configSource="Config\Log4Net.config" /> 

Ensuite, ont des fichiers de section de configuration pour chaque hôte, et dans la configuration de l'application pour chaque hôte de test modifier les références indirectes au fichier approprié pour chaque hôte de test.

-à-dire, dans le app.config pour UnitTestHostA, mis

<appSettings configSource="Config\AppSettings.UnitTestHostA.config" /> 
    <ConnectionConfig configSource="Config\Connections.UnitTestHostA.config" /> 
    <log4net configSource="Config\Log4Net.config" /> 

et UnitTestHostB, mis

<appSettings configSource="Config\AppSettings.UnitTestHostB.config" /> 
    <ConnectionConfig configSource="Config\Connections.UnitTestHostB.config" /> 
    <log4net configSource="Config\Log4Net.config" /> 
+0

Voici comment nous l'avons installé maintenant mais le problème est que les deux applications UnitTestHostA et UnitTestHostB requièrent les mêmes fichiers configSource mais en UnitTestHostA le fichier peut avoir une propriété définie sur "A" et dans UnitTestHostB le fichier la même propriété peut être définie sur "B". Je ne veux pas finir par renommer les fichiers de configuration spécifiques à chaque application de test, car cela entraînera des cauchemars de maintenance majeurs lorsque de nouveaux fichiers de configuration seront ajoutés à l'application elle-même. Je voudrais simplement prendre la dernière version des configs de l'application et les déposer dans l'ensemble de test – user280541

0

Juste au cas où quelqu'un est intéressé à la façon dont je résolus ceci:

Ma résolution est la plus proche de ce que Charles et David ont suggéré de renommer mes fichiers de configuration spécifiques à l'assembly de test. Cependant, au lieu de renommer chaque fichier, j'ai opté pour renommer le dossier App_ Config to [AssemblyName] _Config de cette façon le nombre de renommer que je devrais faire est très limité (en fait il n'y a aucun autre changement de nom à faire).

Bien sûr, j'ai aussi dû faire une recherche et remplacer dans mon fichier App.config principal pour tout configSource = "App_Config \" à configSource = "[AssemblyName] _Config" (où [AssemblyName] est le nom de la assembly de test)

Questions connexes