편집 : 언어/플랫폼/닷넷비웃음이 아닌 가상 이벤트
C#을나는 현재 내 현재 프로젝트에 광대 한 단위 테스트의 공허함을 채우기 위해 노력하고, 틀림없이 새로운 것을하고 있습니다 TDD에게, 좀 더 비즈니스 크리티컬 한 기능을 테스트하는 방법에 대해서는 상당히 혼란 스럽습니다.
나는 Moq를 선택하고 간단한 mock을하기에 충분한 시간을 보냈지 만, 응용 프로그램의 핵심에는 Unit Test를 적절하게 개념화하는 데 어려움을 겪고있는 상당히 크고 무서운 COM interop 계층이 있습니다. COM 구성 요소는 전적으로 타사이므로 수정할 수 없으며 전화 통화를 처리 할 수있는 유한 상태 시스템에 해당하는 요소를 구현합니다. 이 구성 요소는 비 가상 이벤트 세트를 통해 내 응용 프로그램에 알립니다.이 응용 프로그램은 상태 변경을 시뮬레이트하기 위해 특정 주문에서 테스트하고 싶지만 Moq은 가상 이벤트 이외의 다른 작업을 수행하는 방법을 제공하지 않습니다.
지식이 풍부한 TDDers/Mockists에게 묻는 질문은 다음과 같습니다. 이런 종류의 테스트는 어떻게 진행합니까?
분명히 TypeMock이 이것을 지원합니다 (자체적 인 단점이 있습니다).하지만 타입 안전성에 대한 여러 가지 이유와 내 뒤에서 뚜렷한 일을하는 일반적인 느낌으로 사용하지는 않을 것입니다.
정말 잘 응답 해 주셔서 감사합니다.하지만 여전히 COM 구성 요소와 추상화의 일부 레이어 사이에 테스트 할 수없는 상호 작용이있을 것이라는 점에서 문제의 핵심으로 이어지고 있습니다. 어쩌면 TDD 철학에 대한 나의 이해는 근본적으로 결함이 있습니다 ... – TheMissingLINQ
Nope. 너는 꽤 옳아. 그러나 다시, 완벽한 것은 없습니다. – Will