Makefile이 없을 때 Perl 테스트 커버리지

Yesterday’s pair programming sessionGábor Szabó을 가지고 있었고 나는 응용 프로그램에 대한 test coverage 통계를 얻는 방법을 알아 내려고 잠시 주변을 헤매었습니다. Devel::Cover 문서에는 how to run the module several ways이 나열되어 있지만 prove 의 테스트를 실행하는 대신 Makefile 자체를 실행하는 방법을 정확히 설명하지 않습니다. 오늘은 방법을 알아냈고 the Baughs’으로 몇 가지 방법을 더 알아봤습니다.

아래의 모든 예는 bash 또는 zsh 명령 셸을 사용하며 zsh 5.7.1 및 Perl 5.32.1을 실행하는 macOS Catalina 10.15.7에서 테스트되었습니다. 매우 다른 것을 사용하는 경우(예: Microsoft WindowsCMD 또는 PowerShell) 환경 변수를 다르게 설정해야 할 수 있습니다.

임시 테스트 커버리지



하고 싶은 모든 것이 하나의 셸 명령을 실행하는 것이라면 다음과 같습니다.

$ prove -vlre 'perl -MDevel::Cover -Ilib' t


이것은 테스트를 위해 다른 실행 파일을 실행하기 위해 prove --exec 옵션( -e으로 축약됨)을 활용합니다. 재귀적으로( -r ) 응용 프로그램 라이브러리를 로드하는 동안 ( -v ) t 실행 파일은 ( -l 및 679) 145 perl 하위 디렉토리. 나는 debugging tests 때 비슷한 기술을 사용합니다.

$ HARNESS_PERL_SWITCHES=-MDevel::Cover prove -vlr t


이것은 다른 실행 파일을 실행하지 않고 위와 거의 동일한 작업을 수행합니다. -M 명령이 실행되는 동안 Devel::Cover ' lib 환경 변수를 설정합니다. 하지만 마지막에 테스트 커버리지의 텍스트 출력을 얻지 못하고 커버리지를 보고 웹 페이지를 생성하려면 여전히 Test::Harness HARNESS_PERL_SWITCHES 명령을 실행해야 합니다.

전용 테스트 세션, 창 또는 탭에서



테스트 실행 전용 터미널 세션, 창 또는 탭이 있는 경우 해당 세션에 대해 위의 환경 변수 중 하나를 설정합니다.

$ export HARNESS_PERL_SWITCHES=-MDevel::Cover


이제 모든 테스트 스크립트가 해당 옵션을 선택합니다. 환경 변수 값을 prove 따옴표 Devel::Cover 로 묶어 더 많은 옵션을 추가할 수 있습니다. 예를 들어 코드 프로파일링을 위해 로드 cover 할 수도 있습니다.

$ export HARNESS_PERL_SWITCHES='-MDevel::Cover -MDevel::NYTProf'


왜 안 돼 ' ?


' 환경 변수를 설정하면 Devel::NYTProf 실행 중인 PERL5OPT 옵션도 설정됩니다. 즉, 테스트 범위, 프로파일링 등이 PERL5OPT 의 실행과 테스트 스크립트를 선택하게 됩니다.

펄은 어떻습니까?



나는 확실히 모른다; prove 제품군을 사용하지 않습니다. 그러나 prove 옵션을 로드하고 전달하기 위한 yath 옵션이 있는 것 같습니다.

좋은 웹페이지 즐겨찾기