조롱(즉각적 의존성)을 어디에 적용합니까, 아니면 경계를 확장합니까…

StackOverflow https://stackoverflow.com/questions/292767

문제

그래서 저는 C#과 .NET에서 단위 테스트와 모의 작업을 처음 접했습니다.저는 xUnit.net과 Rhino Mocks를 각각 사용하고 있습니다.나는 개종자이고 순전히 TDD가 아닌 동작 사양을 작성하는 데 중점을 두고 있는 것 같습니다.바, 의미론;나는 본질적으로 위에서 작동하는 자동화된 안전망을 원합니다.

그런데 한 가지 생각이 떠올랐습니다.인터페이스에 대한 프로그래밍을 수행하고 종속성을 분리하는 한 이점이 있습니다.판매된.그러나 내 동작 확인 제품군(일명 단위 테스트 ;-))에서는 한 번에 하나의 인터페이스 동작을 주장합니다.마찬가지로, 모든 종속성을 조롱하고 기대치를 설정한 상태에서 한 번에 하나의 인터페이스 구현을 수행합니다.

접근 방식은 클래스가 협력 종속성에 대해 제대로 작동하는지 확인하고 결과적으로 동일한 품질 계약에 서명하기 위해 각 협력 종속성에 의존하는 경우 우리는 황금인 것 같습니다.충분히 그럴싸해 보입니다.

그래도 다시 생각으로 돌아가자.테스트 픽스쳐가 함께 연결된 구체적인 구현 단위에 대해 어설션하고 모의 종속성에 대해 내부 동작을 테스트하는 반통합 테스트에 어떤 가치가 있습니까?방금 그 내용을 다시 읽었는데 아마도 더 잘 표현했을 수도 있겠다는 생각이 듭니다.분명히, "음, 그것이 당신에게 가치를 더한다면 계속하세요"라는 어느 정도의 생각이 있을 것입니다. 그러나 다른 사람이 그렇게 하는 것에 대해 생각하고 비용보다 더 큰 이익을 얻은 사람이 있습니까?

도움이 되었습니까?

해결책

귀하의 질문은 수년간 논의되어 왔으며 "단위란 무엇입니까?"로 바꾸어 표현할 수도 있습니다.

각 클래스를 개별적으로 테스트해야 한다는 단위 테스트 법칙은 없습니다.그러나 유지 관리가 가능하려면 테스트하는 동작이 변경될 때만 테스트를 변경해야 합니다.이런 식으로 보면 가까운 협력자의 구체적인 버전을 사용하고 더 먼 협력자에게는 가짜를 사용하는 것이 종종 합리적입니다.

내가 어떤 종류의 가짜 제품을 절대적으로 사용하는 곳은 Michael Feather의 방법을 따르는 것입니다. 단위 테스트 규칙.

다른 팁

완전히 단위 테스트 가능한 내부 클래스를 함께 연결하는 통합 테스트에서는 가치가 없습니다.

통합 테스트의 가치는 플랫폼이나 외부 인터페이스에 닿는 부분인 것 같습니다.단위 테스트를 할 수 없는 계약입니다.

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