프록시 및 호스트 이름과 모든 종류의 것들을 확인한 후 URL 문자열을 만드는 정적 메서드를 테스트하고 있습니다. 이 메서드는 내부적으로 정적 플래그 System.Net.Sockets.Socket.OSSupportsIPv6
에 의존합니다. 정적이기 때문에이 종속성을 조롱 할 수 없습니다.기계 별 동작에 대한 단위 테스트는 어떻게합니까?
편집 : (이것은 많이 단순화되었습니다 ... 참/거짓을 허용하는 플래그로 메소드의 구조를 수정할 수 없습니다).
XP 개발 컴퓨터에서 문제의 메서드는 예측 가능한 문자열 결과 (이 경우 http://hostname/ ....)를 반환합니다. IPv6를 지원하는 빌드 서버는 완전히 다른 결과를 반환합니다 (이는 내게 http://192.168.0.1:80/...과 같은 것을 제공합니다). 이유를 묻지 마십시오. 요점은 운영 체제 종속성에 따라 다른 두 가지 출력 유형이 있다는 것입니다.
테스트에서 반환 된 호스트 이름이나 IP 주소가 유효한지 확인해야합니다. 출력물을 쉽게 확인할 수 있습니다. 문제는 테스트를 실행할 시스템에 따라 가능한 출력 중 하나만 가져올 수 있다는 것입니다.
이 경우 테스트를 작성하는 가장 좋은 방법은 무엇입니까? 플래그를 검사하고 두 개의 다른 출력을 찾는 if 문을 테스트에 넣습니까? 테스트가 다르게 행동 환경에 따라됩니다
때문에 당신이 알고 할 필요가 있기 때문에,
나는 기본적으로 방법으로 시험 을 결합하고있어에서 실행의 나에게 스케치 보인다 방법의 내부는 두 가지 경우를 설정합니다.
각 환경마다 하나씩 잘못된 환경에있을 때 통과하는 두 가지 테스트를 설정합니까? 어떤 종류의 결과가 나오는지를 구분할 수있는 복잡한 정규 표현식을 작성하고 그것을 검증하기 위해 if/else 논리를 더 사용합니까?
어떤 제안이 도움이 될 것입니다!
그러면 사이트를 테스트하기가 힘들어집니다. 그게 아마도 문제가 아닐지도 몰라 ... –
그건 분명히 이상적 일거야. 나는 실제로 그것을 단순화 시켰습니다. 몇 가지 외부 호출이있었습니다. 의존하는 플래그는 실제로 제어 할 수없는 .dll에 있습니다. – womp
나는 본다. 그럼, 수치 스럽네요. – mquander