레거시 코드로 작업하고 테스트를 만들 때 클래스 또는 메소드의 종속성을 자주 깨기 때문에 이러한 종속성에 대한 mock을 사용하여 단위 테스트를 작성할 수 있습니다. 종속성은 대부분 정적 클래스 및 생성자 또는 새 클래스의 다른 위치에서 new 키워드를 사용하여 만든 객체에 대한 호출 형식으로 제공됩니다.클래스에서 모든 의존성을 제거하는 가장 간단하고 빠른 방법
대부분의 경우 정적 호출은 정적 종속성을 래핑하거나 해당 인터페이스로 종속성을 전달하는 StaticClass.Current.MethodCall() 형식의 단일 패턴 (또는 유사한)이 대신 생성자로 이동하는 방식으로 처리됩니다 .
대부분의 경우 생성자에서 new 키워드를 사용하는 대신 해당 인터페이스를 생성자에서 전달합니다.
대부분의 경우, 클래스의 다른 부분에서 new 키워드를 사용하는 것은 위와 같은 방법으로 처리되거나 필요한 경우 팩토리를 생성하고 팩토리의 인터페이스를 생성자에서 전달합니다.
항상 Resharpers 리팩토링 도구를 사용하여 이러한 모든 문제를 해결할 수 있지만 대부분의 작업은 수동 작업 (자동화 될 수 있음)과 매우 지루한 프로세스 일 수있는 일부 기존 클래스 및 방법에 대한 것입니다. 이 과정에서 나를 도울 다른 리팩토링 플러그인 및/또는 도구가 있습니까? "한 번의 클릭으로이 클래스의 모든 depencencies"리팩토링 도구가 있습니까? =)
많은 개발자와 공통적 인 문제에서 공통적으로 나타나는 것처럼 들리지만 Resharper 또는 CodeRush에 플러그인을 작성하기 전에 누군가가 이미이 문제를 시도했기 때문에 질문해야합니다.
ADDED : 아래 답변에 반영
: 당신은 모든 것을 파괴하고 싶지 않을 수도 경우에도 여전히 간단하게 탈출 할 수있는 번 (이 도움보다 더 많은 문제가 발생할 수 있습니다 한 번의 클릭 총 브레이크 아웃)에서 1 개의 메소드 종속성 또는 1-2 개의 종속성이 쉽게 다를 수 있습니다.
또한 리팩토링 코드에는 "모든 것을 함께 모으는 방법을 배우기 위해 어떤 일이 발생하는지 확인하십시오."라는 측정 값이 있습니다. 코드를 확인하지 않아도 한 번의 클릭만으로 프로세스 톤을 도울 수 있습니다.
아래에 언급 된 고전적으로 효과적으로 작동하는 레거시 코드와 마찬가지로, Brownfield 응용 프로그램 개발이 .NET에서 재미있을 수도 있습니다. http://www.manning.com/baley/ – AakashM