TDD с нулевым кодом производства - PullRequest
0 голосов
/ 29 января 2012

Я читал «Чистый кодер» Боба Мартина, где я читал о дисциплине написания теста перед любым производственным кодом.

Однако в статьях TDD для asp.net в msdn показаны классы и заглушки методов.создаются и затем генерируются модульные тесты из этих заглушек.

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

Редактировать: 1Моя идея состояла в том, чтобы провести рефакторинг до такой степени, чтобы я при необходимости изменил всю структуру отношений между классами.Если я начну с заглушки, то мне придется переписать тесты на случай, если сам класс и метод ошибочны.

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

Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 29 января 2012

Конечно, вы можете.Что вас останавливает?

(Хотя обычно вы пишете один тест за раз, а не пишете их все сразу. Записываете все это прямо на первый взгляд Big Design Up Front,aka Waterfall. Отчасти TDD заключается в том, что вы проектируете по ходу работы и выполняете рефакторинг по мере необходимости, поэтому в итоге вы получаете что-то настолько сложное, насколько вам действительно нужно, чтобы удовлетворить ваши требования - это поможет вам избежать YAGNI .)

Если вы следуете классическим принципам TDD, тогда вы пишете тест для сначала неудачно, запускаете его и наблюдаете неудачу, и толькозатем вы пишете необходимый код, чтобы он прошел.(Это помогает убедиться, что в вашем тесте нет тонкой ошибки .) И если вы тестируете код, которого еще нет, первая ожидаемая ошибка - ошибка компилятора.

Это действительно важно.Вы тестируете код, который не существует.Конечно, компиляция должна завершиться неудачей.Если это не так, то вам нужно выяснить, почему - возможно, ваши тесты на самом деле не компилируются, или, возможно, уже есть класс с тем же именем, что и новый, который вы собираетесь писать, или что-то еще, что выне ожидал.

Ничто не мешает вам сначала написать некомпилируемый тест, а затем вернуться и сделать его компиляцией.(То, что Microsoft не понимала TDD, когда они писали свои инструменты тестирования, не означает, что вы не можете сделать это самостоятельно.) Среда IDE может немного наступить на ваши пальцы (заполнив имена существующих классов вместо того, чтобы оставитьимена, которые вы пытаетесь написать), но вы быстро узнаете, когда нажимать клавишу Esc, чтобы справиться с этим.

Visual Studio 2010 позволяет временно переключать Intellisense в режим «первый тест» , где он не будет наступать на ваши пальцы в этой ситуации.Но если вам случится использовать ReSharper, я не думаю, что у них пока есть эта функция.

0 голосов
/ 29 января 2012

Неважно, если вы сначала создадите заглушки метода или тесты.Если вы сначала напишете тесты, ваш редактор может жаловаться на то, что заглушки метода / класса не существуют.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...