Это мой класс обслуживания:
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.
}
}
Запуск CanGetSomething
и CanGetSomethingElse
отдельно с использованием бегунка тестов ReSharper 5 работает нормально,оба теста пройдены.Тем не менее, попытка запустить тесты подряд, запустив весь класс, заставляет первый метод пройти, а второй метод вызывает исключение
System.ObjectDisposedException: Невозможно выполнить запись в закрытый TextWriter.
Кажется, не имеет значения, какой метод я вызываю во втором тесте, все, что вызывает _db
, вызовет ошибку.Комментирование _db.Log = Console.Error
избавляет от исключения, и оно будет работать нормально.
Я хотел бы иметь возможность регистрировать ошибку и запускать целый класс тестов одновременно, но я не могу понятьпочему это ведет себя так.
Есть идеи?