Я изучаю TDD, используя c #, насколько я знаю, тест должен управлять разработкой , то есть сначала написать провальный тест, а затем написать минимальный код для прохождения теста, а затем выполнить рефакторинг.
Но также сказано, что « Программа для интерфейса, а не для реализации », поэтому сначала напишите интерфейс . Здесь начинается мое замешательство. Если я сначала пишу интерфейс, то это нарушает две вещи
Код, написанный для интерфейса, не управляется тестом .
Это не самый минимум, очевидно, я могу написать это простым классом.
Должен ли я начать с написания тестов для интерфейса также? без какой-либо реализации, что я собираюсь проверить?
Если этот вопрос звучит глупо, извините за это, но я совершенно сбит с толку. Может быть, я воспринимаю вещи слишком буквально.
contract
. Это может быть, например, абстрактный класс, хотя это не должен быть виртуальный класс / метод, потому что вы не сможете создать его экземпляр.
interface
для всего. Аclass
также предоставляет интерфейс, потому что вы можете скрыть детали реализации вprivate
переменных.