Это я вернусь к основам с TDD для обучения.Как проверить, что поле является строкой
я первоначально реализован Person.Surname
в поле типа объекта (простейший из возможных способов прохождения теста.
Затем я добавил тест настройки Person.Surname
о том, что возвращаемое значение должно быть строкой и установить Person.Surname=20
.
я «фиксированный» тест путем изменения реализации использовать string
, а не object
. тест уже давно компилирует из-за статическую проверку типов, так что я заметил это.
Person.Surname
поля в настоящее время реализуется как строка. Если я изменил реализацию поля на объект, ни один из моих тестов не завершился.
Таким образом, я не оставил своего намерения в тесте. Есть ли способ провести неудачный тест в этом случае?
Update: Я согласен с Esko, что практически это не то, что вы хотите делать. С точки зрения обучения точка, которую я пыталась сделать, заключалась в том, что если я (или кто-то другой в более поздний момент времени) расширяет область видимости моего поля (скажем, от строки к объекту), у меня не будет никаких непосредственно сбойные модульные тесты. Может быть, это не плохо?
Если вы измените поле или выполните другой рефакторинг, иногда это приведет к сбою некоторых тестов. Затем вам нужно выяснить, почему тест терпит неудачу и исправить его, обновив производственный код (если последнее изменение просто что-то сломало) или путем обновления тестового кода (если он был сломан, но намерение позади теста остается прежним) или иногда путем удаления теста (если намерение за тестом не является более своевременным). И чтобы узнать, зачем было написано тест, полезно, чтобы тесты описывали функции, как я упоминал в своем ответе. –