В разработке TDD первое, что вы обычно делаете, это создать свой интерфейс, а затем начать писать модульные тесты против этого интерфейса. По мере прохождения процесса TDD вы должны создать класс, который реализует интерфейс, а затем в какой-то момент ваш unit test будет проходить.
Теперь мой вопрос касается частных и защищенных методов, которые мне, возможно, придется писать в моем классе в поддержку методов/свойств, открытых интерфейсом:
-
Если частные методы в классе имеют свои собственные модульные тесты?
-
Если защищенные методы в классе имеют свои собственные модульные тесты?
Мои мысли:
-
Тем более, что я кодирую интерфейсы, я не должен беспокоиться о защищенных/приватных методах, поскольку они являются черными ящиками.
-
Поскольку я использую интерфейсы, я пишу модульные тесты для проверки того, что определенный контракт определен надлежащим образом различными классами, реализующими интерфейс, поэтому снова я не должен беспокоиться о частных/защищенных методах, и они должны быть реализованы через модульные тесты, которые вызывают методы/свойства, определенные интерфейсом.
-
Если мое покрытие кода не показывает, что защищенные/частные методы попадают, тогда у меня нет правильных модульных тестов или у меня есть код, который не используется и должен быть удален.