Паттерн переключения проекта с использования фиктивных объектов и реальных объектов

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

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

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

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


person Adam Naylor    schedule 15.02.2010    source источник


Ответы (1)


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

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

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

vs

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

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

person Paolo    schedule 15.02.2010