문제

가능합니까? SelectNodes() 전화를 걸었다 XmlDocument null을 반환하려면?

내 처지는 100% 단위 테스트 코드 적용 범위에 도달하려고 노력하고 있다는 것입니다.ReSharper는 다음에서 null 반환을 방지해야 한다고 말합니다. SelectNodes() 메서드를 사용하지만 XmlDocument가 null을 반환할 수 있는 방법은 없습니다(따라서 보호 절을 테스트하여 100% 단위 테스트 적용 범위에 도달할 방법이 없습니다!).

도움이 되었습니까?

해결책

100% 코드 적용 범위에 도달해야 합니까?실제로 정상적인 상황에서도 가능합니까(예:통제 가능, 테스트 가능) 상황?

우리는 종종 다음과 같은 "구문 설탕" 구성을 사용하는 것을 발견합니다. using {} 블록에는 "숨겨진" 코드 경로가 생성됩니다(대부분 finally {} 또는 catch {} 블록)은 일부 환경적 조건(예: 깨진 소켓이나 깨진 디스크)이 방해가 되지 않는 한 실행될 수 없습니다.

다른 팁

Reflector를 살펴보면 XmlDocument 기본 클래스인 XmlNode의 SelectNodes() 메서드는 탐색기를 만들려는 시도가 null을 반환하는 경우 null을 반환할 수 있습니다.CreateNavigator()는 매우 복잡하며 몇 가지 상황에서는 실제로 null을 반환합니다.이러한 상황은 잘못된 XML 문서와 관련된 것으로 보입니다. 따라서 SelectNodes() 실패에 대한 테스트 사례가 있습니다.

XmlDocument 자체에서 SelectNodes를 호출하고 실제로는 XmlDocument이고 파생 클래스가 아닌 경우 SelectNodes는 null을 반환하지 않습니다.

하위 클래스를 만들고 CreateNavigator(XmlNode) 메서드를 재정의하면 SelectNodes가 null을 반환할 수 있습니다.

마찬가지로 EntityReference, DocumentType 또는 XmlDeclaration 노드에서 SelectNodes를 호출하면 null도 반환됩니다.

즉, 방금 만들지 않은 XmlDocument 또는 XmlNode에 대한 100% 적용 범위를 얻으려면 null을 테스트해야 합니다.

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