의존성 주입을 사용하여 클래스를 단위로 테스트 할 수 있도록 노력하고 있습니다. 그러나이 클래스 중 일부에는 많은 클라이언트가 있으며 종속성을 전달하기 위해 모든 클래스를 리팩터링 할 준비가되지 않았습니다. 그래서 나는 점차적으로 노력하고 있습니다. 기본 종속성을 유지하면서 테스트를 위해 재정의 할 수 있도록합니다.
내가 고민하고있는 한 가지 접근 방식은 모든 "새로운"호출을 고유 한 방법으로 옮기는 것입니다. 예 :
public MyObject createMyObject(args) {
return new MyObject(args);
}
그런 다음 단위 테스트 에서이 클래스를 하위 클래스로 만들고 create 함수를 재정 의하여 가짜 객체를 대신 만들 수 있습니다.
이것이 좋은 접근입니까? 단점이 있습니까?
보다 일반적으로 테스트를 위해 대체 할 수있는 한 하드 코딩 된 종속성을 갖는 것이 괜찮습니까? 선호하는 접근법은 생성자에서 명시 적으로 요구하는 것임을 알고 있으며 결국 거기에 가고 싶습니다. 그러나 이것이 좋은 첫 단계인지 궁금합니다.
나에게 일어난 한 가지 단점 : 테스트해야 할 실제 서브 클래스가있는 경우 부모 클래스에 대해 작성한 테스트 서브 클래스를 재사용 할 수 없습니다. 각 실제 서브 클래스에 대해 테스트 서브 클래스를 작성해야하며 동일한 작성 함수를 대체해야합니다.