어쩌면 의존성 주입 및 테스트에 대한 이해가 부족하다는 것을 보여줄 수는 있지만 인터페이스를 구현하지 않는 클래스에서 종속성 주입을 사용하면 테스트에 전혀 도움이되는 방법을 이해할 수 없습니까?인터페이스를 제공하지 않더라도 엔터프라이즈 라이브러리에 대한 종속성을 테스트하는 코드는 무엇입니까?
예를 들어 Enterprise Library 5.0 설명서에서는 Unity 컨테이너를 사용하여 인스턴스를 만드는 방법에 대해 설명합니다. 이 기능은 "테스트 가능성 : 종속성 주입 스타일을 사용할 때 클래스를 종속성에서 격리하는 것은 쉽지 않습니다."라고 설명합니다. MSDN
단위 테스트 픽스처에 어떻게 사용합니까? 이 예제는 인터페이스가 아닌 클래스로 매개 변수를 가진 생성자를 가지고 있습니다.
public class TaxCalculator
{
private ExceptionManager _exceptionManager;
private LogWriter _logWriter;
public TaxCalculator(ExceptionManager em, LogWriter lw)
{
this._exceptionManager = em;
this._logWriter = lw;
}
}
필자는 Enterprise Library를 테스트하지 않고 Enterprise Library에 의존하는 자체 코드를 반영하기 위해 제목을 변경했습니다. –
외부 의존성에 비추어 자신의 코드를 테스트하는 방법을 명시 적으로 말하기위한 대답을 업데이트했습니다. –
응용 프로그램의 요구 사항을 설명하는 자체 인터페이스 (예 : 로깅)를 정의하는 것이 좋습니다. 인프라를 비즈니스 코드와 분리하는 것은 좋습니다. 그러나 멋진 프레임 워크 기능을 잃고 다른 추상화 수준을 추가하고 최적화 및 성능을 잃어 버리는 것은 분명히 좋지 않습니다. –