.NET - TextWriterTraceListener, файл, используемый другим процессом

Я пытаюсь войти в сферу TDD, и мне трудно провести модульное тестирование нескольких имеющихся у меня пользовательских моделей. Я пытаюсь проверить валидацию своих моделей, и бизнес-требования таковы:

  1. > = 6 символов требуется имя пользователя
  2. > = 5-символьный пароль, минимум с 1 буквой и цифрой
  3. действительный адрес электронной почты требуемый формат
  4. ... бла-бла-бла
  5. имя пользователя и адрес электронной почты уже не могут существовать в базе данных

Все требования легко проверяются, кроме 5, который требует, чтобы база данных находилась в известном состоянии. Я знаю, что с помощью PHPUnit я могу настроить свою базу данных в известное состояние с помощью файлов XML, но есть ли способ лучше?

Я хочу, чтобы моя база данных вернулась в то состояние, в котором она была до запуска тестов (т. Е. Во время разработки). Полагаю, я мог бы использовать транзакции MySQL для отката изменений, или, я полагаю, я мог бы также использовать две отдельные базы данных, одну для разработки и одну для тестирования.

Я также где-то читал, чтобы не использовать фактические соединения с БД в модульных тестах, а вместо этого использовать фиктивные данные. Не совсем уверен, как это работает.

Может ли кто-нибудь объяснить мне разные варианты, которые у меня есть, и какие маршруты являются лучшими?

Спасибо

Редактировать:

Я думаю, что пойду с Подход Ruby on Rails и просто настроил 3 отдельные базы данных: производство, разработка и тестирование. Если только у кого-то есть серьезные возражения.

6
задан BDuelz 25 May 2011 в 18:32
поделиться