Внедрение зависимости передает зависимость другому объекты или платформа (инжектор зависимости).
Внедрение зависимости делает тестирование легче. Инжекция может быть сделана до [1 124] конструктор .
SomeClass()
имеет его конструктора как следующее:
public SomeClass() {
myObject = Factory.getObject();
}
проблема : Если myObject
включает сложные задачи, такие как доступ к диску или доступ к сети, это твердо , чтобы сделать модульный тест на SomeClass()
. Программисты должны дразнить myObject
, и мог бы прерывание вызов фабрики.
Альтернативное решение :
myObject
в как аргумент конструктору public SomeClass (MyClass myObject) {
this.myObject = myObject;
}
myObject
может быть передана непосредственно, который делает тестирование легче.
более трудно изолировать компоненты в поблочном тестировании без внедрения зависимости.
В 2013, когда я записал этот ответ, это было главной темой на Google Testing Blog . Это остается самым большим преимуществом для меня, поскольку программистам не всегда нужна дополнительная гибкость при их разработке во время выполнения (например, для сервисного локатора или подобных шаблонов). Программисты часто должны изолировать классы во время тестирования.
Я не могу придумать вариант использования, но попробуйте:
string name = Page.GetType().Name;