Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: Adam NaylorОтветов: 1

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

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

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

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

design-patternsmocking

Ответы

Ответ 1 · рейтинг 7 · Paolo

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

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

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

vs

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

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы