Programming

Jest에 대한 코드 커버리지

procodes 2020. 8. 26. 19:34
반응형

Jest에 대한 코드 커버리지


Jasmine 위에 구축 된 Javascript Jest 테스트 프레임 워크에서 코드 커버리지를 가질 수있는 방법이 있습니까?

내부 프레임 워크 그것이 얻는 코드 커버리지를 인쇄 하지 않습니다 . 나는 또한 이스탄불 , 담요JSCover를 사용해 보았지만 그들 중 어느 것도 작동하지 않습니다.


Jest 21.2.1을 사용 하면 명령 줄에서 코드 커버리지를 볼 수 --coverage있고 Jest 스크립트 에 전달 하여 커버리지 디렉토리를 생성 할 수 있습니다 . 다음은 몇 가지 예입니다.

Jest를 로컬에 설치하는 경향이 있는데,이 경우 명령은 다음과 같습니다.

npx jest --coverage

나는 (확인하지는 않았지만) Jest를 전 세계적으로 설치 한 경우에도 작동한다고 가정합니다.

jest --coverage

매우 드문 문서가 여기 있습니다.

coverage / lcov-report 디렉토리 로 이동했을 때 브라우저에로드 할 수 있는 index.html 파일을 찾았습니다 . 여기에는 명령 줄에 인쇄 된 정보와 추가 정보 및 일부 그래픽 출력이 포함되었습니다.


업데이트 : 2018 년 7 월 20 일-coverageReporters에 대한 링크 추가 및 업데이트 된 이름.

업데이트 : 2017 년 8 월 14 일-이 답변은 완전히 구식입니다. 지금 Jest 문서를보세요. 이를 수행하는 방법에 대한 공식 지원 및 문서가 있습니다.

@hankhsiao는 이스탄불이 Jest와 함께 작업하는 분기 저장소를 가지고 있습니다. 이것을 개발 종속성에 추가하십시오.

 "devDependencies": {
     "jest-cli": "git://github.com/hankhsiao/jest.git"
 }

또한 package.json jest 항목에서 적용 범위가 활성화되어 있는지 확인하고 원하는 형식을 지정할 수도 있습니다. (html은 꽤 나쁜 엉덩이입니다).

 "jest": {
     "collectCoverage": true,
     "coverageReporters": ["json", "html"],
 }

coverageReporters에 대한 Jest 문서 참조 (기본값은 )["json", "lcov", "text"]

또는 --coverage농담을 호출 할 때 추가하십시오 .


2019 년 1 월 : Jest 버전 23.6

특히 npm 또는 yarn을 직접 사용하여 테스트하는 경우이 질문을 최근에 찾는 사람

현재는 구성 옵션을 변경할 필요가 없습니다.

당으로 농담 공식 웹 사이트 , 당신은 커버리지 보고서를 생성하려면 다음을 수행 할 수 있습니다

1- npm의 경우 :

--jest의 --coverage 인수를 전달하기 전에 넣어야합니다.

npm test -- --coverage

--coverage없이 직접 호출하면 --작동하지 않습니다.

2- 원사의 경우 :

--coveragejest 인수를 직접 전달할 수 있습니다.

yarn test --coverage

좋습니다. 누군가가 문제가 해결되지 않았다고 말 했으므로 이전 답변을 무시하십시오.

새로운 답변 :

1) 최신 jest (v 0.22) 확인 : https://github.com/facebook/jest

2) 페이스 북 팀은 이스탄불을 커버리지 보고서의 일부로두고 직접 사용할 수 있습니다.

3) jest 실행 후 콘솔에서 커버리지 리포트를받을 수 있으며 jest가 설정 한 루트 폴더 아래 커버리지 리포트를 json, html 형식으로 찾을 수 있습니다.

4) 참고로, npm에서 설치하면 최신 버전을받지 못할 수 있습니다. 그러니 먼저 github를 시도하고 커버리지가 필요한지 확인하십시오.


이전 답변 :

같은 문제가 있습니다. 짧은 대답은 : Istanbuland Jestare not together.

자세한 내용은 다음 페이지를 확인하십시오.

https://github.com/facebook/jest/issues/101

jest는 네이티브 코드의 V8 컨텍스트에서 JS 스크립트를 실행하는 contextify를 사용하여 이스탄불의 모든 require 및 vm.runInThisContext 후크를 우회합니다. 따라서 표준 후크 가능한 node.js 함수가 사용되지 않고 사전 계측 파일이 도움이되지 않기 때문에 이스탄불 커버가 작동하지 않습니다. 모든 테스트가 자체 샌드 박스에서 실행되고 커버리지 개체를 숨길 전역이 없기 때문입니다.

@Ciro Costa : config.collectCoverage'TODO'기능이므로 작동하지 않습니다. 소스 코드를 확인하십시오.


--coverage가 작동하지 않는 데 문제가있는 경우 'text'또는 'text-summary'를 추가하지 않고 coverageReporters를 활성화했기 때문일 수도 있습니다. 문서에서 : "참고 :이 옵션을 설정하면 기본값을 덮어 씁니다. 콘솔 출력에서 ​​적용 범위 요약을 보려면"text "또는"text-summary "를 추가하십시오." 출처


package.json 파일 구성

"test": "jest --coverage",

enter image description here

이제 실행 :

yarn test

모든 테스트가 실행되고 보고서를 받게됩니다. enter image description here


나는 같은 문제가 있었고 다음과 같이 수정했습니다.

  1. 실을 설치하다 npm install --save-dev yarn
  2. jest-cli 설치 npm install --save-dev jest-cli
  3. 이것을 package.json에 추가하십시오. "jest-coverage": "yarn run jest -- --coverage"

테스트를 작성한 후 npm run jest-coverage 명령을 실행하십시오. 루트 디렉토리에 커버리지 폴더가 생성됩니다. /coverage/icov-report/index.html에는 코드 커버리지에 대한 html보기가 있습니다.

즐거운 코딩 되세요!


Try Chutzpah. I have just used it. And I blogged about it on how to integrate in Visual Studio.

This is how I did code coverage with Chutzpah: http://francorobles.wordpress.com/2014/09/14/code-coverage-with-chutzpah/

참고URL : https://stackoverflow.com/questions/24825860/code-coverage-for-jest

반응형