2012-02-10 4 views
8

Есть ли у кого-нибудь пример модульного тестирования в CSLA. Мне трудно реализовать TDD с этой структурой, и мне было интересно, есть ли какие-либо простые способы сделать это. Есть ли какая-либо другая Mock Framework, которую я мог бы использовать помимо TypeMock Isolator, которая может свободно создавать мой тестовый объект? Пожалуйста, если у вас есть предложения и примеры/примеры, я был бы в восторге? Спасибо.Единичное тестирование в CSLA? Как? Какие?

ответ

8

Я не уверен, если я расскажу вам какую-то новую информацию, но из CSLA 4 проще выполнить модульное тестирование своих пользовательских бизнес-приложений, и если вы используете репозитории в качестве уровня данных, вы можете высмеять репозитории для проверки бизнес-объекты вместе с передним концом, используя их. Просто помните, что бизнес-объекты - это не более чем куча объектов со свойствами, где вы должны использовать бизнес-правила для реализации бизнес-логики. Эти бизнес-правила - это просто классы, которые вы можете тестировать без проблем.

Все зависит от вашей инфраструктуры. Вы используете шаблон IoC?

Какую версию CSLA вы используете?

Вы используете CSLA ObjectFactory?

Если вы используете CSLA, так как он должен использоваться, у вас будут статические методы фабрики, и у вас есть непубличный конструктор. Если вы все же хотите, чтобы модуль тестировал эти свойства внутри BusinessObjects, вы можете выбрать один из некоторых вариантов.

  1. Если вы используете IoC для datalayer (репозитории), то вы можете издеваться над теми, и протестировать бизнес-объекты, настроив IoC с издеваешься и пнями и в TestMethod называют фабричные методы и сделать тест.

  2. Если вы не используете IoC, вам может быть повезло, если вы пошли на решение CSLA ObjectFactory - там вы можете использовать mocks и stub.

  3. Если вы не используете IoC и не пошли на ObjectFactory, вы не можете легко тестировать бизнес-объекты. Но это все еще возможно, зарегистрировав пользовательский DataPortal. Внутри DataPortal вы можете использовать отражение для построения бизнес-объекта и разрешить некоторый макет/заглушку для этого конкретного бизнес-объекта. Это непросто, но это выполнимо.

К сожалению, у меня нет примеров.