Сторонние компоненты с TDD - PullRequest
2 голосов
/ 27 ноября 2010

Пытаюсь начать использовать TDD в классе, который выплевывает объект, принадлежащий стороннему компоненту.Однако я немного запутался в том, что:

a) При модульных тестах объекты должны тестироваться изолированно

b) Сторонние компоненты должны быть упакованы в адаптер

* 1006Применяются ли эти правила при написании тестов для кода, который возвращает экземпляр объекта, принадлежащего стороннему компоненту?В качестве примера, вот тест на данный момент:
// Arrange
string foodXml = "<food><ingredient>Cabbages</ingredient>" +
                 "<ingredient>Bananas</ingredient></food>";
IFoodMixer mixer = new FoodMixer();

// Act

// Smoothie is the third-party component object
Smoothie urgh = mixer.Mix(foodXml);

// Assert

Assert.AreEquals("Cabbages", urgh.Ingredients[0].Name);
Assert.AreEquals("Bananas", urgh.Ingredients[1].Name);

Извинения, если этот вопрос кажется немного базовым (или если концепция выше кажется немного глупой!) - я просто пытаюсь понять, как два правила вышеможет применяться в этой ситуации.

Заранее благодарим за любые советы!

Ответы [ 2 ]

4 голосов
/ 27 ноября 2010

Я был бы практичен с этим.Если Smoothie - это просто объект данных, не беспокойтесь об этом.

Есть что-то внутри этого FoodMixer, который в первую очередь создает Smoothie.Если это сторонний компонент, я бы обернул его (вы можете делегировать из класса статическому методу, если требуется), затем внедрить зависимую оболочку и смоделировать ее в своем модульном тесте.

Ваш модульЗатем test описывает поведение и обязанности вашего FoodMixer, независимо от SmoothieMaker (независимо от того, является он сторонним или нет).Часть ответственности FoodMixer - попросить SmoothieMaker о Smoothie, а не делать сам Smoothie.Путем насмешек мы можем выразить эту ответственность и охват класса.

Если ваш Smoothie не просто объект данных, но имеет богатое поведение, я бы включил его и в ваш упакованный SmoothieMaker.

Теперь вы полностью отделены от сторонних библиотек, и выюнит-тест легко как полезный побочный продукт.

0 голосов
/ 27 ноября 2010

Посмотрите на mockito как на более простой способ автоматического создания макетов и проверки утверждений вместо использования адаптеров. Есть также много хороших учебников по mockito (и JMocks), которые также являются хорошими учебниками TDD.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...