문제

Dunit으로 코드 범위를 측정 할 수있는 방법이 있습니까? 아니면이를 달성하는 무료 도구가 있습니까? 당신은 그것을 위해 무엇을 사용합니까? 일반적으로 어떤 코드 범위를 사용합니까?

Jim McKeeth : 자세한 답변에 감사드립니다. 나는 실패가 발생한 후 단위 테스트뿐만 아니라 TDD 접근법의 의미에서 단위 테스트에 대해 이야기하고 있습니다. 기본적인 미리 트리트 한 단위 테스트로 달성 할 수있는 코드 적용 범위에 관심이 있습니다.

도움이 되었습니까?

해결책

Delphi 2010을위한 기본 코드 커버리지 도구와 함께 Google 코드에 새로운 오픈 소스 프로젝트를 만들었습니다. https://sourceforge.net/projects/delphicodecoverage/

지금은 라인 커버리지를 측정 할 수 있지만 클래스 및 메소드 커버리지도 추가 할 계획입니다.

요약과 함께 HTML 보고서를 생성하고 (빨간색), 코드가 생성되지 않은 나머지 라인을 보여주는 줄 (녹색)을 보여주는 표시 소스를 표시합니다.

업데이트:버전 0.3의 델파이 코드 커버리지 Hudson Emma 플러그인과 호환되는 XML 보고서를 생성하여 코드 커버리지 트렌드를 표시 할 수 있습니다. 허드슨 강.

업데이트:버전 0.5는 버그 수정, 구성 가능성 증가 및 정리 보고서를 제공합니다.

업데이트:버전 1.0은 Emma 출력, 클래스 및 방법의 범위 및 DLL 및 BPLS 범위에 대한 지원을 제공합니다.

다른 팁

나는 무료 도구를 모른다. aqtime 델파이 프로파일 링의 거의 Defacto 표준입니다. 나는 그것을 사용하지 않았지만 빠른 검색이 발견되었습니다. 델파이를 찾으십시오, 이제 오픈 소스이지만 코드 커버리지 만 수행합니다.

이러한 도구 중 하나는 장치 테스트가 얼마나 많은 코드 범위를 얻는 지에 대한 아이디어를 제공해야합니다.

단위 테스트 또는 오래된 코드의 코드 커버리지를 언급하고 있습니까? 일반적으로 실패가있는 테스트 가능한 코드 만 단위 테스트로 덮어야한다고 생각합니다 (예, 성스러운 전쟁을 시작할 수도 있지만 그것이 내가 서있는 곳입니다). 그래서 그것은 매우 낮은 비율 일 것입니다.

반면에 오래된 코드는 다른 이야기입니다. 오래된 코드는 사용되지 않는 코드입니다. 많은 코드에 대해 이것을 알려주는 도구가 필요하지 않을 것입니다. 델파이에서 컴파일 한 후 작은 파란색 점을 찾으십시오. 파란 점이없는 것은 부실합니다. 일반적으로 코드를 사용하지 않으면 제거해야합니다. 따라서 100% 코드 범위입니다.

날짜가 2 월 31 일에 착륙 할 경우 처리 할 특별 코드가있는 경우와 같이 오래된 코드에 대한 다른 시나리오가 있습니다. 컴파일러는 그것이 일어날 수 없다는 것을 알지 못하므로 컴파일하고 파란색 점을 제공합니다. 이제 단위 테스트를 작성하고 테스트하면 작동하면 작동 할 수 있지만 두 번째 시간을 낭비했습니다 (코드를 작성하는 첫 번째, 두 번째 테스트).

프로그램이 실행될 때 어떤 코드 경로를 사용하는지 추적하는 도구가 있지만 모든 코드 경로가 매번 사용되지 않기 때문에 SIMI가 신뢰할 수 있습니다. Leap Year를 처리 해야하는 특수 코드와 마찬가지로 4 년마다 만 운영됩니다. 따라서 꺼내면 4 년마다 프로그램이 중단됩니다.

나는 Dunit 및 Code Coverage에 대한 귀하의 질문에 실제로 답하지 않았다고 생각하지만, 나는 당신이 시작한 것보다 더 많은 질문을 남겼을 것이라고 생각합니다. 어떤 종류의 코드 커버리지를 찾고 있습니까?

업데이트: TDD 접근 방식을 취하는 경우 테스트를 작성할 때까지 코드가 작성되지 않으므로 본질적으로 100 개의 테스트 범위가 있습니다. 물론 각 방법이 테스트에 의해 행사되기 때문에 전체 행동 범위가 행사된다는 것을 의미하지는 않습니다. SmartInspect 타이밍 등과 함께 호출되는 메소드를 측정 할 수있는 정말 쉬운 방법을 제공합니다. AQ 타임보다 약간 적지 만 무료는 아닙니다. 더 많은 작업을 수행하면 모든 코드 경로 ( "If"명령문 등의 분기 등)를 측정하기 위해 계측을 추가 할 수 있습니다. 물론 적용 범위 보고서를 달성하기 위해 방법에 자신의 로깅을 추가 할 수 있습니다. (글쎄, 당신의 시간을 기대하십시오. 아마도 도구보다 더 가치가있을 것입니다). Jedi Debug를 사용하면 통화 스택도 얻을 수 있습니다.

TDD는 실제로 많은 리팩토링 없이는 기존 코드에 소급 적용 할 수 없습니다. 최신 Delphi IDE는 각 공개 방법에 대해 단위 테스트 스터브를 생성 할 수 있지만 공개 방법을 100% 적용 할 수 있습니다. 그 스터브에 넣은 내용은 적용 범위가 얼마나 효과적인지 결정합니다.

나는 사용한다 델파이를 찾으십시오 또한 Dunit으로 단위 테스트 및 TestComplete의 기능 테스트를 위해 작업을 수행합니다.

Discover는 자동화를 위해 명령 줄에서 실행되도록 구성 할 수 있습니다. 에서와 같이 :

Discover.exe Project.dpr -s -c -m

디스커버리는 나에게 훌륭하게 작동합니다. AQTIME와 달리 응용 프로그램이 느려지지 않습니다. 물론 이것은 당신에게 문제가되지 않을 수 있습니다. 최근 AQTITE 버전이 이와 관련하여 더 잘 수행된다고 생각합니다.

나는 Discover를 사용하여 "몇 년 동안, BDS2006 (마지막으로 사용하고 사용하고 사용하는 Delphi의 마지막 사전 XE* 버전)을 포함하여 훌륭하게 일했지만 현재 OpenSourced 상태를 사용하여 작동하는 방법은 불분명합니다. XE* Delphi의 버전. 정말 부끄러운 일입니다.이 도구를 좋아했기 때문에 거의 모든면에서 빠르고 편리합니다. 이제 Delphi 코드 커버리지로 이사합니다 ...

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