Я начинаю, и мне нравится TDD, но меня интересует концепция красного зеленого света. Я теоретически понимаю важность обеспечения того, что вы можете провалить тест перед его прохождением. На практике, однако, я нахожу это несколько бесполезной практикой.
Я чувствую, что не могу правильно написать провальный или проходящий тест без реализации кода, который я собираюсь протестировать. Например, если я напишу тест, чтобы показать, что мой DataProvider возвращает DataRow, мне нужно написать логический DAL для значимого сбоя, сбоя, превышающего NullException, или возврата Null из пустого метода, что-то, что кажется бессмысленно, так как я чувствую, что красный свет должен показать, что я могу создать неудавшийся тест из фактической логики, которую я тестирую.
Другими словами, если я просто возвращаю значение null или false, из функции, которую я тестирую, чтобы получить мой сбой, что на самом деле является значением красного света.
Однако, если я уже реализовал логическую (что в некотором смысле противоречит первой парадигме теста), я обнаружил, что просто тестирую взаимоисключающие концепции (IsTrue вместо IsFalse или IsNull вместо IsNotNull) только ради получить красный свет вместо зеленого, а затем переключить их на противоположный, чтобы получить пропуск.
Я не пытаюсь понять концепцию, я действительно задаю этот вопрос, потому что это то, что я заметил, и мне интересно, делаю ли я что-то не так.
EDIT
Я принял ответ Чарли Мартина, так как он работал лучше всего для меня, он никоим образом не говорит о том, что в других ответах не было никакой обоснованности, и все это помогло мне понять концепцию, которую я явно не придерживался правильно