>백엔드 개발 >C++ >C C의 테스트 범위는 사용 방법을 가르쳐 줄 것입니다.

C C의 테스트 범위는 사용 방법을 가르쳐 줄 것입니다.

Linda Hamilton
Linda Hamilton원래의
2025-01-30 04:04:09526검색
소프트웨어 테스트 범위는 소프트웨어 개발에서 매우 중요합니다. 테스트는 소프트웨어가 예상대로 실행되도록하고 테스트 범위는 코드의 모든 가능성을 확인합니다. 많은 현대 언어에는 적용 범위의 적용 범위를 생성하는 라이브러리 나 도구가 있지만 C 언어를위한 "기본"도구가 있다는 것을 알고 있습니까?

± 42 코드를 반환하는 간단한 코드로 시작하겠습니다.

지금은 간단한 테스트 파일입니다

이제 GCC/CC 컴파일러와 및

<code class="language-c">#include <stdbool.h>

int return_42(bool ret_neg) {
  if (ret_neg)
    return -42;
  return 42;
}</code>
를 사용하여 코드를 컴파일 할 수 있습니다.

이렇게하면 실행 파일과 확장 이름

가있는 파일이 생성됩니다.
<code class="language-c">#include <assert.h>
#include <stdbool.h>
#include <stdio.h>

int return_42(bool ret_neg);

int main() {
  assert(return_42(false) == 42);
  assert(return_42(true) == -42);
  puts("Nice");
  return 0;
}</code>
이 파일을 만든 후 테스트를 실행하고 작동 후

가있는 파일을 만듭니다. -fprofile-arcs 이 새로 생성 된 파일을 사용하면 GCOV 도구를 사용하여 처리 한 다음 (GCOV를 먼저 설치 한 다음) GCOV를 실행하고 및 파일 이름을 전달할 수 있습니다 (일반적으로 -ftest-coverage와 동일한 이름이 있습니다. 파일, 같은 이름, 동일한 이름의 파일, 같은 이름, 파일, 파일, 동일한 이름, 파일, 동일한 이름의 파일, 파일, 파일, 파일, 파일, 파일, 파일, 파일, 파일, 파일, 파일 파일, 파일, 파일, 파일, 파일, 파일, 파일, 파일, 파일, 파일, 파일, 파일, 파일, 파일이 동일합니다. 이름, 파일이지만 다를 수 있습니다). 이렇게하면 확장자 가있는 파일이 생성됩니다. GCOV는 적용 범위에 대한 작은 요약을 제공하지만 간단한 테스트 이상의 경우 (예 : 라이브러리에 120 개 이상의 테스트가 있습니다) 결과를보다 직관적으로 표시해야합니다.

다음으로 LCOV (LCOV를 먼저 설치하십시오)를 사용하고 LCOV를 실행하려면 , 및 를 사용합니다. 라는 파일을 생성하고 적용 범위의 적용 범위를 인쇄합니다. 불행히도,이 요약에는 어떤 기능이 확인되었는지를 보여주지 않지만 생성 된

파일을 사용하면 .gcno를 사용하여 LCOV를 실행할 수 있습니다. 그러나 우리는 여전히 1 % 만 얻었으며 어떤 줄이 확인되었는지 알 수 없으므로 마지막 단계를 입력하여 결과를 더 쉽게 시각화 할 수 있습니다.

genhtml을 사용하여

및 마크를 전달하십시오. Genhtml은 더 읽기 쉬운 적용 범위가 포함 된 폴더를 생성합니다 (이 HTML 파일을 마음대로 열 수 있습니다. 개인적으로 가장 좋아하는 방법은 .gcda)을 사용하는 것입니다).

.gcda Clang을 사용할 수도 있지만 마크는 변경됩니다. 나는 Clang을 좋아하지 않기 때문에 최종 결과가 아름답 지 않다고 생각하기 때문에, 나는 Depth에서 공부하지 않았지만 모든 기능은 LLVM으로 만 실행될 수 있습니다 LLVM 도구. .gcno 마지막으로 Genhtml에는 일반적으로 사용되는 마커가 많이 있습니다

Cobertura de teste em C existe e vou te ensinar a usar 좋아요, 오늘 여기 있습니다. 다음에 뵙겠습니다!

위 내용은 C C의 테스트 범위는 사용 방법을 가르쳐 줄 것입니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.