TDD с паттерном стратегии - PullRequest
4 голосов
/ 03 июня 2010

Я пытаюсь реализовать шаблон стратегии с использованием TDD.Каждый элемент стратегии реализует интерфейс.Каков наилучший способ сделать это с TDD?

Нужно ли создавать тестовое приспособление для каждой реализации интерфейса, тестирующего одни и те же методы, но на каждой реализации?

Любые статьи, подробно описывающие подходбрать бы с благодарностью приветствовали:)

Ответы [ 2 ]

2 голосов
/ 04 июня 2010
  1. Написать тест, который не проходит
  2. Напишите некрасивый код, чтобы пройти этот тест
  3. Рефакторинг для улучшения кода

На шаге 2 напишите код, который не реализует шаблон стратегии (самая простая вещь, которая работает, даже если присутствует дублированный код).

Затем на шаге 3 вы проводите рефакторинг каждого класса, по одному, к шаблону стратегии, если это все еще имеет смысл.

Если вы действительно делаете TDD, тогда вы не начинаете с паттерна - вы рефакторинге к нему.

1 голос
/ 04 июня 2010

Думаю, я бы написал отдельный тестовый класс для каждой реализации стратегии.

Вы можете создать абстрактный класс для наследования всех этих. Это поможет вам убедиться, что вы реализуете все тесты для каждой стратегии, но имеет небольшой недостаток, заключающийся в том, что вам придется реализовывать методы-заглушки, по крайней мере, до того, как каждый класс теста будет даже компилироваться.

...