web-dev-qa-db-fra.com

Test - La chaîne de connexion est manquante

Visual studio a créé pour moi un projet de test unitaire basé sur une méthode (clic droit ajouter un test). Lorsque j'essaye d'accéder à la base de données, j'obtiens une exception. Ran ce code pour voir quelle était ma connexion:

ConnectionStringSettings connStringSettings = ConfigurationManager.
    ConnectionStrings["myConnectionString"];

mais, connStringSettings est nul. Lors de l'inspection, la collection ConnectionStrings ne compte qu'un seul. Il semble ne pas lire de mon web.config.

Mon DAL est isolé et ne peut pas avoir sa chaîne de connexion définie via le code. Sa chaîne de connexion est définie dans le code comme ceci:

set
{
    value = System.Configuration.ConfigurationManager.
        ConnectionStrings["myConnectionString"].ConnectionString;
}

Comment puis-je résoudre ça?

25
O.O

Ajouter un App.config dans votre projet de test unitaire et copiez la chaîne de connexion à partir du Web.config.

Mise à jour: meilleure solution

Bien que l'ajout d'une configuration résoudra le problème immédiat, il en résulte toujours des tests unitaires en fonction d'une connexion à la base de données réelle, ce qui n'est pas génial. La meilleure façon de résoudre ce problème est de se moquer entièrement du DAL et de le transmettre aux services qui l'utilisent.

Microsoft fournit quelques conseils à ce sujet ici . La configuration prend un peu plus de temps, mais cela permet aux tests d'être beaucoup plus contenus et complets.

56
eouw0o83hf

Excellent cela a fonctionné pour moi. J'ai ajouté le fichier App.config sous le projet de test unitaire. Mais assurez-vous que nous devons suivre la synatx, sinon elle lèvera une exception.

<connectionStrings>

    <add name="test" connectionString="" providerName="System.Data.SqlClient" />

    <add name="db" connectionString=""" providerName="System.Data.SqlClient"/>

</connectionStrings>
6

Ajoutez une chaîne de connexion dans le fichier app.config du test unitaire. Le projet de test unitaire n'aura pas accès à la configuration Web de votre projet Web.

5
Brian