2012-08-30 5 views
3

Visual Studio에서 (CodeCoverage가 활성화 된 상태로) 테스트를 실행하면 실행 된 코드 부분과 실행되지 않은 코드 부분이 강조 표시됩니다.고유 CodeCoverage 강조 표시

는 강조의 세 가지 종류가 있습니다, 지역, 감동 지역부분적으로 지역을 감동 감동하지 않습니다. 다음의 두 가지 의사 코드는 코드가 부분적으로 만지는 예제를 보여줍니다.

if (true || false) 

if (false && true) 

그러나 테스트를 실행할 때 코드의 강조 표시에 대해 궁금합니다. 파란색 배경은 코드가 완전히 만졌음을 나타내며 진한 주황색은 코드가 부분적으로 만졌음을 나타냅니다.

enter image description here

이 전혀 이해가되지 않습니다 (마지막 행의 하이라이트는현재 라인). if 문은 논리 AND 연산으로 작성되었으므로 true 문에 대한 코드를 입력하기 위해 완전히 조작해야합니다.

나는 이것이 버그라고 생각하지만, 나는 오해가 없다는 것을 분명히하고 싶다. if 문이 부분적으로 만질 수 있고 진실한 진술이 제기되는 이유는 무엇입니까?

답변

2

내 생각 엔 테스트 변수가 참이기 때문에 if 본문을 건너 뛰지 않았기 때문입니다. 조건부이며 비슷한 것으로 컴파일되었습니다.

if (!test) 
    goto afterBody; // 1 
if (!(dummy != null)) 
    goto afterBody; // 2 
// body 
afterBody: 
// next statement 

1로 표시된 줄은 실행되지 않으므로 부분적으로 적용됩니다.

+3

단 하나의 조건 일 뿐이지 만 IL에는 test true, test false, dummy null, dummy not null의 4 개 경로가 있습니다. – bryanbcook