Я вижу много практикующих TDD, следующих за этим циклом:
1) Напишите свой тест, как если бы цель
объекты и API уже существуют.
2) Скомпилируйте решение и посмотрите его
перерыв.
3) Напишите достаточно кода, чтобы получить его
компиляции.
4) Запустите тест и посмотрите, не удастся ли.
5) Напишите достаточно кода, чтобы получить его
проходить.
6) Запустите тест и убедитесь, что он прошел
7) Рефакторинг
В чем преимущество шагов 1 и 2? С IDE, такими как Visual Studio, это действительно раздражает, так как intellisense перепрыгивает повсюду, пытаясь угадать методы и атрибуты, которых там нет.
Обычно я начинаю с шага 3, когда все мои методы выдают исключение NotImplementedException, и мне это кажется вполне подходящим, но, возможно, я что-то упускаю.
Редактировать для уточнения : это не вопрос, почему я должен увидеть, что тест не пройден до того, как он пройдет; это рассматривается на шаге 3, и это имеет смысл. Мой вопрос заключается в том, почему еще до этого люди будут вызывать метод в модульном тесте, который не существует в API (поэтому VS покажет красный загогулин, или раскрасит все имя метода красным и т. Д.) И попытается все равно скомпилировать. Для меня факт, что VS говорит мне, что метод не существует, достаточно хорош.