문제

나는 단위 테스트에 관한 많은 기사를 읽었습니다.대부분의 기사에서는 테스트에서 하나 이상의 모의 개체를 사용해서는 안 된다고 했지만 그 이유를 이해할 수 없습니다.때때로 우리는 테스트에서 하나 이상의 모의 객체가 정말로 필요할 때가 있습니다.

도움이 되었습니까?

해결책

테스트 중인 클래스를 격리하려면 필요한 만큼 모의 객체를 추가해야 합니다.테스트에 포함되어서는 안 되는 모든 종속성에 대해 모의가 필요합니다.

때로는 단순화를 위해 두세 개의 클래스를 테스트에 함께 배치하기도 합니다. 왜냐하면 클래스는 구성 요소와 같은 것을 구축하고 고도로 결합되어 있기 때문입니다.다른 모든 것은 조롱되어야 합니다.

나는 이 "모범 사례"가 단 하나의 모의를 가지고 있다는 것을 알고 있으며 또한 그것을 이해하지 못합니다.단위 테스트에는 많은 모의가 있고, 일부 환경 모의는 제가 작성한 테스트 프레임워크에 의해 설정됩니다(예:TransactionService, SecurityService, SessionService).Gishu가 이미 그의 답변에서 언급했듯이 고려해야 할 사항은 단 하나입니다. 많은 모의는 높은 의존성을 나타냅니다.그것이 너무 많은지 고려하는 것은 당신에게 달려 있습니다.우리는 테스트에서 많은 모의가 필요한 작은 인터페이스를 많이 가지고 있습니다.

대답을 바꾸려면 다음을 수행해야 합니다. ~ 아니다 다음과 같은 경우 종속성을 조롱합니다.

  • 내부 클래스, 개인 클래스 등과 같이 테스트 중인 클래스의 고도로 결합된 부분입니다.
  • 컬렉션 등과 같은 일반적인 .NET 프레임워크 클래스입니다.
  • 해당 클래스와의 상호 작용을 정확하게 테스트하기 위해 통합 테스트를 작성하려고 합니다.(여전히 다른 모든 것을 조롱하고 관련된 모든 클래스에 대해 여전히 단위 테스트를 별도로 수행합니다.)
  • 특정 클래스를 조롱하는 것은 비용이 너무 많이 듭니다.너무 비싸다는 점을 주의하세요. 모의 클래스는 설정하기 어려운 것처럼 보이지만 실제 클래스를 사용할 때 발생하는 유지 관리 문제에 비하면 아주 쉽습니다.그러나 인터페이스에 대해 구현되지 않고 모의하기가 매우 어려운 일부 프레임워크와 기술이 있습니다.이 프레임워크 클래스를 자신의 인터페이스 뒤에 두는 것이 너무 비싸다면 테스트에서 해당 클래스와 함께 사용해야 합니다.

다른 팁

컨텍스트에 따라 단위 테스트에서 두 개 이상의 모의를 가질 수 있습니다.

그러나 나는 '기사'가 암시하는 것은

  • 예방 오버 모킹. 단위 테스트가 모든 공동 작업자를 조롱하면 문을 열어 두십시오. 실제 공동 작업자를 대체 할 때 시나리오가 실패 할 수 있습니다. 모의 수를 최소화하고 실질적인/가능한/가능한 한 실제 공동 작업자를 사용함으로써 해당 위험을 최소화합니다.
  • 높은 커플 링 ALERTS : 단위 테스트를 작성하기 위해 많은 공동 작업자를 조롱해야한다면 커플 링이 높다는 것을 나타내는 디자인 냄새 일 수 있습니다.

나는 당신이 언급하는 기사를 잘 모르겠지만 일반적으로 테스트중인 클래스에 대한 종속성 당 하나의 모의 객체가 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top