これは私のサービスクラスです:なぜDataContextのログを設定するとObjectDisposedExceptionが発生するのですか?
public class MyService
{
private readonly MyDataContext _db;
public MyService()
{
_db = new MyDataContext(GetConnectionString());
#if DEBUG
_db.Log = Console.Error;
#endif
}
public void Get(int id)
{
return from item in _db.Items
where item.Id == id
select item;
}
}
これは私のテストクラスを別々のReSharper 5テストランナーが正常に動作し使用してCanGetSomething
とCanGetSomethingElse
を実行
[TestClass]
public class MyServiceTest
{
private MyService _service = new MyService();
[TestMethod]
public void CanGetSomething()
{
var something = _service.Get(1).ToList();
// Asserts
}
[TestMethod]
public void CanGetSomethingElse()
{
var somethingElse = _service.Get(2).ToList();
// Commented out everything else.
}
}
で、両方のテストに合格します。しかし、クラス全体を実行することにより、連続してテストを実行しようとすると、例外に
System.ObjectDisposedExceptionをスローするように渡すための第1の方法と第2の方法を発生します閉じたTextWriterに書き込めません。
2番目のテストでどのメソッドを呼び出すかは関係ありません。_db
を呼び出すものはエラーの原因になります。 _db.Log = Console.Error
をコメントアウトすると、例外が取り除かれ、正常に動作します。
エラーをログに記録して、一度にすべてのクラスのテストを実行できるようにしたいのですが、なぜこのように動作しているのかわかりません。
アイデア?
ありがとう@Polityあなたが正しく、サービスコンストラクタはコンテキストを作成します。 TestInitializeでサービスを作成することができました。 – Brandon