Зачем вам нужно откатить изменения? Ваши юнит-тесты обновляют живые данные? Если модульные тесты написаны правильно, вам не нужно выполнять очистку после того, что изменили ваши тесты, потому что изменяемые данные должны быть изолированы от вашего теста.
Edit:
Похоже, вы настроили набор данных для тестирования и хотите убедиться, что набор данных восстановлен в исходное состояние. Я предпочитаю практику настройки тестовых данных как части теста, но я понимаю, что это может быть сложно для сложных тестов.
Если это в источнике данных ADO.NET, вы можете начать транзакцию, а затем откатить эту транзакцию в конце теста. Например:
using (var transaction = db.BeginTransaction())
{
// Do tests here
}
// The transaction is rolled back when disposed
Редактировать 2:
Третий вариант, если у вас нет поддержки транзакций, - создать резервную копию ваших тестовых данных в месте, где они не будут изменены, а затем в конце теста восстановить эту резервную копию. *