Стоп. А как же это понимать тогда?Автор оригинала: Crazy
Подразумевает ли TFD обязательное использование рефакторинга? Нет.
Вообще-то да, точнее не именно твоя фраза, а то как это подается на http://www.agiledata.org/essays/tdd.htmlПравильно ли я понял: моя фраза о том, что я использую TFD, вызвала у тебя подозрение, что я не использую рефакторинг?
Я думаю, это самый значимый абзац в данной статье.1. What is TDD?
The steps of test first development (TFD) are overviewed in the UML activity diagram of Figure 1. The first step is to quickly add a test, basically just enough code to fail. Next you run your tests, often the complete test suite although for sake of speed you may decide to run only a subset, to ensure that the new test does in fact fail. You then update your functional code to make it pass the new tests. The fourth step is to run your tests again. If they fail you need to update your functional code and retest. Once the tests pass the next step is to start over (you may first need to refactor any duplication out of your design as needed, turning TFD into TDD).
Да-да. Старая школьная шутка.Автор оригинала: _RVK_
Crazy вмешаюсь можно? Ты сказал TDD = TFD + рефакторинг. Ты используешь TFD но не иcпользуешь TDD.Согласно формуле TFD != TDD только если нет рефакторинга....
Для начала я просто процитирую маленький фрагмент:Автор оригинала: pachanga Вообще-то да, точнее не именно твоя фраза, а то как это подается на http://www.agiledata.org/essays/tdd.html
Теперь перейдем к фразе:Kent Beck, who popularized TDD in eXtreme Programming (XP) (Beck 2000), defines two simple rules for TDD (Beck 2003). First, you should write new business code only when an automated test has failed. Second, you should eliminate any duplication that you find.
Странность твоей логики я поясню на следующей аналогии:Стоп. А как же это понимать тогда?
TDD = TFD + refactoring.
Т.е в TFD, по-твоему все же может входить рефакторинг?
Ошибаюсь ли я, в своем предположении, что ты don't refactor any duplication out of your design когда используешь TFD?(you may first need to refactor any duplication out of your design as needed, turning TFD into TDD)
Мне кажется, автору этой статьи тоже бы понравились твои аналогии с сиропомTest Driven Development (TDD), a software development
practice used sporadically for decades has gained added visibility
recently as a practice of Extreme Programming (XP) .
TDD is also known by names such as, Test First Design (TFD),
Test First Programming (TFP) and Test Driven Design (TDD). The
practice evolves the design of a system starting from the unit test
cases of an object. Writing test cases and implementing that object
or object methods then triggers the need for other objects/methods.
Судя по вопросу -- даже пример с сиропом не помог.Автор оригинала: pachanga Ошибаюсь ли я, в своем предположении, что ты don't refactor any duplication out of your design когда используешь TFD?
Прости, в пятый раз я начинать не стану. Это уже утоляет.Автор оригинала: pachanga Послушай, разве что-то нелогично в моих аргументах?
Я уже сказал:Давай не будем превращать это в личную склоку, ок?
Если отказ от дискуссии с тобой ты воспринимаешь как начало личной склоки, то для меня это всего лишь еще одно подтверждение того, что наше с тобой логическое мышление абсолютно различно. Возможно, товое более правильно. Но мне этого все равно не понять.В продолжении лично я смысла не вижу.
Да я понимаю, что, наверняка, это и имелось в виду. Только вот из моей практики ни разу не было такого случая чтобы "дизайн первой сессии" прижился больше чем на 5 минут. У нас рефакторинг идет постоянный.Автор оригинала: whirlwind
Может быть речь идет о первоначальных тестах, тех самых, что пишутся до первого рефакторинга?
Быстрые в каком плане?Кстати, TFD тесты легче представить, если не использовать моки. Если вместо них заюзать реальные юниты, то TFD - это очень быстрые тесты.
Немного не понял, что ты имеешь в виду под изоляцией в данном контексте. Если твои тесты выполняются в любой последовательности, не влияя друг на друга и автоматически устанавливая необходимую среду для тестирования(БД, набор директорий, почтовый сервер и проч.), то это, в принципе, и есть изоляция.И тесты у меня не изолированные.
Согласен почти на 100%, т.к. не раз была ситуация, когда моки в первоначальных тестах заменялись "реальными" классами или стабами в последующих итерациях рефакторинга тестов.Моки не люблю - без них "случайно" выясняются граничные ситуации других юнитов (т.к. общее кол-во тестов увеличивается) да и время затраченное на изоляцию меня почему то не окупается.
Вот и я про что, да хоть TFPТак что мой TDD вполне подходит под определение TFD, хотя мне абсолютно по барабану как это называется, лишь бы в помощь
Но ведь если объект "B", с которым работает тестируемый объект "A", окажется неправильно рабочим, то слетит и тест для класса "A".С моками самое главное - знать меру и не слишком ими увлекаться.
По-хорошему, также должен слететь тест на "B" и обычно из контекста видно, что если слетел тест на "B", который используется "A", то надо именно чинить "B".Но ведь если объект "B", с которым работает тестируемый объект "A", окажется неправильно рабочим, то слетит и тест для класса "A".
Получается мы потратим некоторое время только лишь на выяснения того, что тест провалился из-за объекта "B"