Шаблон для переключения проекта с использованием фиктивных объектов и реальных объектов - PullRequest
1 голос
/ 15 февраля 2010

Мне нравится идея модульного тестирования уровня в моем приложении с использованием шаблона Mock Object . Проблема, с которой я сталкиваюсь, заключается в том, как переключаться с моих фиктивных объектов на реальные, когда не выполняется модульное тестирование.

Моей первоначальной реакцией было обращение к двум библиотекам (одна с реальными объектами, а другая с макетами) и использование символов условной компиляции для переключения между двумя пространствами имен. Это, однако, однозначно требует, чтобы проект был перестроен без символа UNITTEST (после прохождения модульного тестирования), чтобы на реальные объекты можно было ссылаться.

Существуют ли модели, которые достигают этой цели?

К вашему сведению, моя среда c # 2, если это дает какую-либо выгоду.

1 Ответ

7 голосов
/ 15 февраля 2010

Вы захотите посмотреть внедрение зависимостей и способы, которыми объекты должны принимать свои зависимости через конструктор, а не создавать их сами.

Например, контраст:

public MyClass()
{
    myDBConnection = new SqlConnection();
}

против

public MyClass(IDbConnection connection)
{
    myDBConnection = connection;
}

Во втором вы можете пройти фиктивное соединение с базой данных в своем модульном тесте, в реальном коде вы передадите реальную вещь.

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