J'essaie de créer un ensemble de tests unitaires MS Visual Studio pour mon application Web à plusieurs niveaux, mais pour une raison quelconque, je ne peux pas les exécuter des tests et je reçois l'erreur suivante -Problème avec les tests unitaires du projet ASP.NET (NullReferenceException lors de l'exécution du test)
« référence d'objet non définie à une instance d'un objet »
Ce que je suis en train de faire est le test de ma couche d'accès aux données où j'utilise Classe de contexte de données LINQ pour exécuter une certaine fonction et renvoyer un résultat, cependant pendant le processus de débogage, j'ai découvert que tous les tests échouent dès que comme ils obtiennent à la classe de contexte de données LINQ et il a quelque chose à voir avec la chaîne de connexion, mais je ne peux pas comprendre quel est le problème.
La mise au point de tests échoue ici (la deuxième ligne):
public EICDataClassesDataContext() :
base(global::System.Configuration.ConfigurationManager.ConnectionStrings["EICDatabaseConnectionString"].ConnectionString, mappingSource)
{
OnCreated();
}
Et mon test est la suivante:
TestMethod()]
public void OnGetCustomerIDTest()
{
FrontLineStaffDataAccess target = new FrontLineStaffDataAccess(); // TODO: Initialize to an appropriate value
string regNo = "jonh"; // TODO: Initialize to an appropriate value
int expected = 10; // TODO: Initialize to an appropriate value
int actual;
actual = target.OnGetCustomerID(regNo);
Assert.AreEqual(expected, actual);
}
La méthode que j'appelle de DAL est:
public int OnGetCustomerID(string regNo)
{
using (LINQDataAccess.EICDataClassesDataContext dataContext = new LINQDataAccess.EICDataClassesDataContext())
{
IEnumerable<LINQDataAccess.GetCustomerIDResult> sProcCustomerIDResult = dataContext.GetCustomerID(regNo);
int customerID = sProcCustomerIDResult.First().CustomerID;
return customerID;
}
}
Donc, fondamentalement, tout échoue après avoir atteint la première ligne de la méthode de couche DA et quand elle essaie d'instancier t La classe d'accès aux données LINQ ...
J'ai passé environ 10 heures à essayer de résoudre le problème mais aucun résultat ... J'apprécierais vraiment toute aide!
MISE À JOUR: Enfin, je l'ai résolu ce !!!! :) Je ne sais pas pourquoi, mais pour certaines raisons dans le fichier app.config la connexion à ma base de données a été comme suit:
AttachDbFilename = | DataDirectory | \ EICDatabase.MDF
Donc ce que j'ai fait, c'est que je viens de changer le chemin et au lieu de | DataDirectory | Je mets le chemin réel où mon fichier MDF est assis, à savoir
C: \ Users \ 1 \ Documents \ Visual Studio 2008 \ Projects \ EICWebSystem \ EICWebSystem \ App_Data \ EICDatabase.mdf
Après Mais je ne sais toujours pas quel était le problème ... probablement un chemin incorrect vers la base de données Mon web.config de projet ASP.NET contient le chemin | DataDirectory | \ EICDatabase.MDF cependant ..
Hey Alex, un coup d'oeil à ce http://stackoverflow.com/questions/236412/connexion-chaîne-enfer-dans-net-linq-sql-asp-net J'espère que cela vous aide. – Malcolm
J'ai essayé de créer le fichier app_config sous le répertoire du projet Test, puis j'ai simplement copié-collé la section 'Connectionstrings' du fichier web.config dans ce fichier app.config et après avoir exécuté le test, j'ai obtenu une exception différente : "System.Data.SqlClient.SqlException: Échec de la tentative de connexion d'une base de données nommée automatiquement pour le fichier C: \ Program Files \ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ EICDatabase.mdf Une base de données portant le même nom existe, ou fichier spécifié ne peut pas être ouvert, ou il est situé sur le partage UNC .. "Ai-je fait mal ou c'est un autre nouveau problème? – Alex