7
votes

Chaîne de connexion dans le projet de test d'unités pour la base de données de référence dans le dossier App_Data

Je cherche à référencer mon fichier de base de données dans mon projet de test de l'unité. Ceci est une application ASP.NET MVC.

Veuillez noter que je sais que je ne devrais pas accéder à la base de données dans mes tests d'unité, mais c'est pour une solution rapide sur un test que j'ai besoin de passer juste maintenant.

Après la prochaine étape, je me moquerai des méthodes d'accès à la base de données, etc.

Voici ma chaîne de connexion dans ma configuration Web d'application MVC et les fichiers AP.Config Test < Pré> xxx

Quand j'exécute le test, j'obtiens une erreur: xxx

Il me semble que la chaîne de connexion est fausse mais je ne sais pas Comment définir le chemin correctement. J'ai essayé d'ajouter \ .. \ .. et les noms de répertoires, etc.


1 commentaires

C'est la valeur par défaut qui vient avec vs2008, donc je pense que oui.


4 Réponses :


4
votes

Mstest exécutera votre assemblage de test de l'unité dans un dossier complètement différent de chaque test. L'idée est que chaque exécution est un cas complètement isolé des courses précédentes et ultérieures. C'est en fait une sorte de douleur de le dire de copier des fichiers de données avec le reste de votre application. Vous devez cliquer avec le bouton droit de la souris sur votre solution (pas votre projet), choisissez Ajouter, créer une nouvelle configuration de test. Ensuite, vous devez modifier la configuration de test et spécifier quels fichiers seront copiés dans le dossier d'exécution des tests. Il devrait y avoir un répertoire de frère de soeur à votre répertoire de solution appelé TestResults qui contient les dossiers utilisés pour chaque test de test.


1 commentaires

Ouais j'ai remarqué les différents dossiers de sortie. Merci, cela m'a fait ma journée, maintenant au lit.)



1
votes

Commentez la réponse de Craig: il ne devrait pas être une douleur pour déployer des fichiers de données supplémentaires pour l'exécution des tests d'unités. Vous pouvez utiliser DéploymentItemattribute (Microsoft.visualstudio.Testoools.Untestest) aux niveaux de classe ou de méthode pour spécifier quels fichiers doivent être copiés avant d'exécuter ces tests.


1 commentaires

Merci de me diriger dans cette direction. Il devrait en réalité être: [DeploymentItem ("ConnectionsTrings.config")]



3
votes

Vous pouvez simplement référencer localdb comme ceci: xxx

où webporttaldb est votre nom de base de données.


0 commentaires

0
votes

La meilleure réponse est de ne pas vous connecter à une base de données avec des tests unitaires et de moquer de la base de données. Cependant, vous devrez peut-être refacturer le code MVC existant pour accéder à un point où vous pouvez vous moquer d'une dépendance de base de données et vous ne devez jamais refroidir avant que votre code soit enveloppé dans certains tests. Donc, dans cette situation, oui - vous aurez probablement besoin de connecter votre projet de test à la base de données, au moins pendant un certain temps jusqu'à ce que vous puissiez tout suffisamment pour permettre la moqueur.

Donc, dans mon cas, j'utilisais ASP.NET MVC 5. Cela signifiait que je pourrais obtenir l'entité nécessaire Framework Config ajoute au fichier App.Config du Projet de l'unité, simplement en cliquant avec le bouton droit de la souris sur le fichier de solutions, gérant Nuget for Solution. et ajout d'EF au projet de test.

Ajout de la chaîne de connexion du fichier web.config du projet MVC presque travaillé, avec le médicament mineur que je devais supprimer le partie finale de la chaîne qui a déclaré: xxx

comme je le disais, la création de tests "unité" qui se connecter à une base de données n'est pas la voie à suivre, donc cela ne sera qu'un mesure temporaire. Mais le code a besoin de refactoring pour l'obtenir à un état moqueur, et celui qui refacteurs qui se refactors sans au moins quelques tests pour prouver que le refactoring n'a pas brisé tout est de la croisière pour une ecchymose.


0 commentaires