2014-04-10 8 views
-1

코드 커버리지 도구 (주로 C#)부터 시작합니다. 지금까지 NCrunch 및 DotCover를 테스트했습니다..Net coverage 도구는 "조건 적용"을 지원합니까?

두 가지 모두 지점 및 기능 범위와 관련하여 잘 작동하는 것으로 보이지만 조건부 적용 범위에 속하는지 확실하게 알 수는 없습니다. 예를 들어, 테스트중인 일부 코드에서는 적어도 하나의 경로가 존재하는 한 다음과 같은 내용이 표시됩니다 (또는 그것에 대해 잘못 생각합니까?). 그러나 코드를 통한 논리적 경로가 모두 커버되는 경우에만 다루어 져야합니다.

if (item != "") 
{ 
    glc.AddGrayListItem(GrayListTypeEnum.BlackList, item); 
} 
내가 DotCover 또는 NCrunch (또는 C#을위한 다른 도구)이이 두 경우를 제외하고이 적용되지 않습니다 말해 것인지 알고 싶습니다 무엇

(아이템! = NULL) 및 (항목 == null)이 테스트됩니다.

다양한 사이트를 살펴본 결과 이러한 도구가 이러한 방식으로 작동하는지 또는이 방식으로 작동하는 다른 도구가 있는지에 대해 확실한 답을 찾을 수 없습니다. 다양한 코드 커버리지 도구가 제공하거나 제공하지 않는 서비스 유형에 대한 확실한 정보를 가지고 있습니까?

+0

나는이 댓글의 생산성이나 연구하기 위해 무엇을 할 수 있는지 정말 모르겠어요. 제품 포럼을 검토하고이 사이트뿐만 아니라 다른 사이트를 검색했지만 어떤 종류의 간결한 답변도 아직 발견하지 못했습니다. 어떤 도움을 주시면 감사하겠습니다. – Joe

+0

좋아, 나는 사실에 초점을 맞춘 질문을 재구성하려고 노력했다. 나는 어느 커버리지 툴이 좋든/나쁘 든 사람들의 의견에는 관심이 없다. 어떤 도구가 어떤 종류의 적용 범위 기준에 적합한 지 또는 필요한 도구를 얻는 방법을 알고 싶습니다. – Joe

답변

1

개인적으로 나는 if 진술의 가상의 (부재) else 부분이 실행되었는지 여부를 알려주는 범위 분석 도구가 없음을 알고 있습니다.

+0

나는 가상의 else 문을 실행하는 관점에서가 아니라 코드 경로 측면에서 내 마음 속으로 프레임을 구성한다고 가정합니다. 이 코드에는 두 개의 개별 경로가 있습니다. 테스트중인 명령문이 true로 평가되고 블록이 실행되거나 명령문이 false로 평가되고 블록이 실행되지 않습니다. if 블록 내에서 문을 다루는 것과 if 블록 자체의 조건을 다루는 것 사이에 구별이 있어야합니다. 공구로 구분하지 마십시오. – Joe

+0

나는 당신의 요지를 완전히 이해하지만 어떤 도구가 이것을하지는 않는다고 생각합니다. 오히려, 그들은 실제로 거기에있는 코드를 (일방적으로 또는 다른 방식으로) 계측하고 그것이 실행되었는지 여부를보고하는데 의존합니다. –

+0

그건 불행하지만 이해할 수있는 제한 사항입니다. 답장을 보내 주셔서 감사합니다! – Joe

0

다른 사람들이이 질문에 대한 답변에 관심이있는 경우 ... NCover는 지금까지 (2017) 일을 수행 한 유일한 도구입니다. Visual Studio Enterprise Code Coverage, NCrunch, Resharper dotCover, OpenCover 및 NDepend를 확인했습니다. 귀하가 요청한 조건 커버리지 케이스는 그들 중 누구도 지원하지 않았습니다. 단위 테스트가 귀하의 예에서 진실과 거짓을 모두 다루지 않는 경우 NCover는 66.67 %의 조건 범위를 보여줍니다.

0

OpenCover의 현재 버전은 브랜치 커버리지 측정이 다루 않는 것

enter image description here