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