Должен ли я действительно писать свой код иначе, чтобы я мог его протестировать? - PullRequest
0 голосов
/ 23 сентября 2011

Я иду на C # из ruby ​​на рельсах, где я сделал TDD, используя Rspec и Mocha. Я хотел попасть в фальшивый фреймворк, и старый пост, посвященный стековому потоку, направил меня в сторону MOQ и moh носорогов. Я не решался взять на себя обязательство и ищу немного советов или разъяснений или, может быть, просто бодрый разговор ...

Вот мои проблемы:

  • Насмешки носорога кажутся немного устаревшими. Во многих примерах даже не использовались дженерики, потому что кажется, что они не были доступны при создании фреймворка
  • Moq кажется менее мощным, чем макеты Rhino, и кажется, что вам нужно адаптировать свои классы, чтобы имитировать их (либо они должны реализовывать интерфейс, либо все методы должны быть виртуальными)

Я здесь далеко от базы? Я что-то пропустил? Есть ли какая-нибудь крутая новая структура, о которой я должен знать, или мне просто нужно открыть свой разум и признать, что насмешки не одинаковы для статических языков?

(я знаю, что подобные вопросы задавались в прошлом, но они кажутся мне немного устаревшими, и мне интересно узнать, что нового появилось в моде)

Ответы [ 2 ]

3 голосов
/ 23 сентября 2011

Разработка через тестирование не имеет побочного эффекта, заставляющего вас писать свой код по-другому. На самом деле он предназначен для того, чтобы заставить вас писать код по-другому. Мы думаем, что вы лучше пишете код, когда тестируете его. Вы, скорее всего, будете скрывать код за интерфейсом, и это хорошо. Надеюсь, это заставит вас делать разные вещи по-другому!

На носорога / Мок ...

Rhino Mocks получил небольшой пересмотр с момента его написания, вам больше не нужно использовать синтаксис записи / воспроизведения, вы можете использовать синтаксис Arrange-Act-Assert, и никаких волшебных строк не видно.

Насмешки носорога - Синтаксис утверждения действия

В Moq вы можете макетировать интерфейсы и классы. Синтаксис проще и немного выразительнее.

Хорошая новость в том, что я думаю, что вы смотрите на лучшие два и пытаетесь выбрать между ними. Я не думаю, что вы пожалели бы, выбрав любой из них.

3 голосов
/ 23 сентября 2011

Я лично голосую за moq, но выбор среды для насмешки действительно зависит от вас. Я также думаю, что тестируемость - это достаточно веская причина, чтобы писать код по-другому. Интерфейсы в целом довольно сложно использовать, и в долгосрочной перспективе они, вероятно, сделают ваш код более понятным.

...