Здравствуйте, зиг, Вы писали:
зиг>во-вторых мы не должны менять код который тестируем только потому что не можем нормально написать тест.
Неверно. Частенько рефакторят только ради тестируемости (и в качестве побочного эффекта улучшают архитектуру).
зиг>Что делать-то?
Лично я перед каждым тестом базу пересоздаю (у меня под это дело отдельный экземпляр SQL-сервера крутится с базой в tmpfs — т.е. в RAM). Так что никаких роллбэков-хэков мне не надо, и с этим подходом я могу даже selenium-тесты гонять на задеплоенном приложении, в которое уж точно rollback не подсунешь.