Я сейчас переписываю приложение базы данных и использую Entity Framework для доступа к БД. В настоящее время я использую MSTest и копию базы данных в качестве части этих тестов. Мой MSTest включает в себя следующий код в качестве части каждого теста:
[TestInitialize()]
public void MyTestInitialize()
{
transScope = new TransactionScope(TransactionScopeOption.RequiresNew, new TransactionOptions { Timeout = new TimeSpan(0, 10, 0) });
}
[TestCleanup()]
public void MyTestCleanup()
{
Transaction.Current.Rollback();
transScope.Dispose();
}
Теперь, похоже, это очень хорошо работает для тестирования и сбрасывает БД между тестами. Мои тесты используют контекст БД, чтобы выполнять операции CRUD с тестовой БД, а затем откатывать их позже.
Я немного читал об изоляции библиотеки C # от базовой БД для тестирования, но мне интересно, что это на самом деле меня покупает. Как часть этого переписывания, большая часть (но не весь) кода, который был в хранимых процедурах, была перемещена в слой C #, но осталось несколько, которые вызываются через триггеры для таблиц. Что я получу от прохождения макета слоя базы данных? Честно говоря, когда я смотрю на это, мне кажется, что это дополнительная работа без какой-либо очевидной ценности, но, возможно, я здесь упускаю суть.
Мысли