這是我的服務類:爲什麼設置登錄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;
}
}
這是我的測試類
[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.
}
}
分別使用ReSharper的5測試運行運行CanGetSomething
和CanGetSomethingElse
工作正常,這兩個測試通過。但是,試圖通過運行整個類來連續運行測試會導致第一種方法通過,第二種方法拋出異常
System.ObjectDisposedException:無法寫入到已關閉的TextWriter。
在第二個測試中我調用什麼方法似乎並不重要,任何調用_db
的東西都會導致錯誤。註釋掉_db.Log = Console.Error
擺脫了異常,它會正常工作。
我希望能夠記錄錯誤並一次運行整個類的測試,但我不明白爲什麼它的行爲如此。
任何想法?
Thanks @Polity。你說得對,服務構造函數創建上下文。在TestInitialize中創建服務工作。 – Brandon 2011-05-18 16:10:04