[javascript] Jest 코드 커버리지

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

내부 프레임 워크 코드 범위를 인쇄 하지 않습니다 . 나는 또한 Istanbul , blanketJSCover 사용하려고 시도했지만 그중 아무것도 작동하지 않습니다.



답변

Jest 21.2.1을 사용할 때 명령 행에서 코드 적용 범위 --coverage를보고 Jest 스크립트 로 전달 하여 적용 범위 디렉토리를 작성할 수 있습니다 . 다음은 몇 가지 예입니다.

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

npx jest --coverage

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

jest --coverage

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

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


답변

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

업데이트 : 8/14/2017-이 답변은 완전히 구식입니다. 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"]

또는 --coveragejest를 호출 할 때 추가하십시오 .


답변

2019 년 1 월 : Jest 버전 23.6

최근 에이 질문을 조사하는 사람은 특히 테스트를 사용 npm하거나 yarn직접

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

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

1- npm의 경우 :

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

npm test -- --coverage

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

2- 원사 :

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

yarn test --coverage


답변

누군가가 나에게 문제가 해결되지 않았다고 말한 것처럼 이전의 대답을 무시하십시오.

새로운 답변 :

1) 최신 농담을 확인하십시오 (v 0.22) : https://github.com/facebook/jest

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

3) jest를 실행하면 콘솔에서 범위 보고서를 얻을 수 있으며 jest에서 설정 한 루트 폴더 아래에서 json 및 html 형식의 범위 보고서를 찾을 수 있습니다.

4) 참고로, npm에서 설치하면 최신 버전을 얻지 못할 수 있습니다. 따라서 github을 먼저 시도하고 적용 범위가 필요한지 확인하십시오.


기존 답변 :

같은 문제가 있습니다. 짧은 대답은 다음 IstanbulJest같습니다.

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

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”,

여기에 이미지 설명을 입력하십시오

이제 다음을 실행하십시오.

yarn test

모든 테스트가 시작되고 보고서가 표시됩니다.
여기에 이미지 설명을 입력하십시오


답변

나는 같은 문제가 있었고 아래와 같이 수정했다.

  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보기가 있습니다.

행복한 코딩!