n 層 Web アプリ用に多数の MS Visual Studio 単体テストを作成しようとしていますが、何らかの理由でこれらのテストを実行できず、次のエラーが発生します -
"オブジェクト参照がオブジェクト インスタンスに設定されていません"
私がやろうとしているのは、LINQ データ コンテキスト クラスを使用して特定の関数を実行し、結果を返すデータ アクセス レイヤーをテストすることですが、デバッグ プロセス中に、すべてのテストが到達するとすぐに失敗することがわかりました。 LINQデータコンテキストクラスであり、接続文字列と関係がありますが、何が問題なのかわかりません。
テストのデバッグはここで失敗します (2 行目):
public EICDataClassesDataContext() :
base(global::System.Configuration.ConfigurationManager.ConnectionStrings["EICDatabaseConnectionString"].ConnectionString, mappingSource)
{
OnCreated();
}
そして、私のテストは次のとおりです。
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);
}
DAL から呼び出すメソッドは次のとおりです。
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;
}
}
したがって、DAレイヤーメソッドの1行目に到達した後、LINQデータアクセスクラスをインスタンス化しようとすると、基本的にすべてが失敗します...
問題のトラブルシューティングに約 10 時間費やしましたが、結果は得られませんでした...助けていただければ幸いです。
更新: 最後にこれを修正しました!!!!:) 理由はわかりませんが、 app.config ファイルのいくつかの理由により、データベースへの接続は次のようになりました。
AttachDbFilename=|データディレクトリ|\EICDatabase.MDF
だから私がしたことは、パスを変更しただけで、 |DataDirectory| の代わりに MDF ファイルが置かれている実際のパスを入力します。
C:\Users\1\Documents\Visual Studio 2008\Projects\EICWebSystem\EICWebSystem\App_Data\EICDatabase.mdf
私がそれを行った後、それはうまくいきました!しかし、まだ何が問題なのか少しはっきりしていません...おそらくデータベースへのパスが間違っていますか? ASP.NET プロジェクトの web.config には |DataDirectory|\EICDatabase.MDF パスが含まれています..