75 votes

Comment utiliser le web.config lors de tests unitaires d'un asp .net application

Je suis débutant avec l'unité de test, j'ai une méthode qui utilise le web.config pour une chaîne de connexion.

J'espérais être en mesure d'utiliser

[DeploymentItem("web.config")]

pour obtenir le fichier de configuration web, cela me laisse encore avec référence null exceptions (que j'avais de ce que j'écris mon prochain test pour).

Comment puis-je utiliser le fichier de configuration fourni avec le projet que je suis en train de tester?

Je suis en utilisant le framework de test inclus dans VS 2008, si cela fait une différence.

Merci

113voto

Gerrie Schenck Points 13421

Test de l'unité projets doivent avoir leur propre fichier de configuration.

Sur un projet de test, vous pouvez choisir Ajouter un Nouvel Élément, le Fichier de Configuration d'Application.

Ce fichier va se comporter exactement comme un site web.config, mais là pour les tests unitaires.

16voto

Tony Points 116

Vous pouvez charger dans un site web.config ou app.config à partir de n'importe quel emplacement à l'aide de OpenMappedExeConfiguration.

ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap()
fileMap.ExeConfigFilename = @"c:\my-web-app-location\web.config"

Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
string connectionString = config.AppSettings.Settings["ConnectionString"].Value;

Ici, c'est le web.config, assez standard.

<?xml version="1.0"?>
<configuration>
  <configSections>
  </configSections>
  <appSettings>
    <add key="ConnectionString" value="Data Source=XXXX;Initial Catalog=XXX; Trusted_Connection=True;"/>
  </appSettings>
</configuration>

7voto

jitbit Points 8072

Copier votre site web.fichier de configuration dans le fichier "/bin" du dossier et le renommer en "AppName.dll.config".

Où "Nom" est le nom de l'assemblage qui en résulte.

J'ai utilisé ce hack de nombreuses fois.

4voto

Mark Brittingham Points 18970

Vous voulez que vos résultats soient bien définies et reproductibles. Pour cela, vous aurez besoin de travailler à contre-données connues, de sorte que vous pouvez définir clairement les deux normal de votre cas et votre limite de cas. Dans mon travail, c'est toujours un serveur spécifique et l'ensemble de données afin que l'Unité module de test a la chaîne de connexion intégré. D'autres préfèrent utiliser une chaîne de connexion de l'Unité de Test du projet. Je n'ai jamais vu personne recommandons l'utilisation du site web du fichier de config! de développement (ou autre)

1voto

Serhat Özgel Points 10010

Si vous avez besoin d'une chaîne de connexion, vous n'êtes pas d'écrire un test unitaire (en supposant que vous êtes à l'aide de la chaîne de connexion pour la base de données). Les tests unitaires ne sont pas censés interagir avec l'environnement extérieur. Vous voulez toutes les courir après chaque contrôle, alors ils mieux de courir à la vitesse de la lumière.

Pour une unité de test, vous voulez isoler votre code à partir de votre base de données. Modifier vos tests (et le code à tester si nécessaire), de sorte que vous n'aurez pas besoin d'aller à la base de données pour les tests.

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