Я слышал о лондонском и чикагском стилях (иногда их называют стилем Детройта) в Test Driven Development (TDD).
Семинар группы пользователей Utah Extreme Programming:
TDD в стиле взаимодействия также называют mockist-style или London-style после лондонского клуба Extreme Tuesday, где он стал популярным. Это обычно противопоставляется Детройтскому стилю или классическому TDD, который больше основан на состоянии.
Семинар охватывает как чикагскую школу TDD (тестирование поведения и триангуляции на основе состояния), так и лондонскую школу , которая больше фокусируется на интерактивном тестировании, моделировании и сквозном TDD, с особым акцентом на ответственный дизайн и Скажите, не спрашивайте подход к ОО, недавно повторно популяризированный превосходной книгой Стива Фримена и Ната Прайса « Растущее объектно-ориентированное программное обеспечение, управляемое тестами» .
Пост Классический TDD или "Лондонская школа"? Джейсон Горман был полезен, но его примеры меня смутили, потому что он использует два разных примера вместо одного примера с обоими подходами. В чем различия? Когда вы используете каждый стиль?
Calculator
произойдет регрессияmultiply
, вы увидите два теста не пройдены: тест бухгалтерской книги и тест калькулятора, но только один тест не пройдёт, если вы прогоните калькулятор. Это может помочь определить источник ошибки, особенно если система сложная.Статья Мартина Фаулера « Насмешки не заглушки » - хорошее введение в тему.
В зависимости от выбранного вами стиля дизайна (и принципов дизайна, на которых вы строите свои программы), существует как минимум два способа увидеть объект:
В первом случае вас интересует, что выходит из обработки или в каком состоянии объект остается после этой обработки. Это где методы, такие как
assertEquals()
введите изображение. В этом случае не имеет большого значения, какие другие объекты были задействованы в обработке, какие методы были вызваны и т. Д. Этот тип проверки называется проверкой на основе состояния и представляет собой «классический» стиль.Во втором случае, поскольку большинство объектов даже не возвращают никакого результата (например,
void
методы в Java), вас больше интересует, как объекты взаимодействуют друг с другом и передают ли они правильные сообщения при обстоятельствах, наложенных тестом. Эти взаимодействия обычно проверяются с помощью фиктивных рамок. Этот вид проверки называется проверкой на основе поведения или взаимодействия. Одним из его последствий является метод под названием Behavior Driven Development, с помощью которого вы разрабатываете класс, предполагая, что его соавторы уже существуют (даже если они еще не существуют), поэтому вы можете кодировать их интерфейсы.Обратите внимание, что это не выбор. У вас может быть стиль дизайна, который сочетает в себе оба подхода, чтобы получить максимальную отдачу от каждого.
источник