Jest 코드 커버리지


131

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

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


나는 농담이 아니지만 config.collectCoverage ?
Ciro Costa

답변:


123

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

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

npx jest --coverage

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

jest --coverage

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

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


7
전역 모듈을 사용하지 마십시오. 버전 일관성 및 패키지 존재를 보장하려면 항상 node_modulesvia 에서 실행 파일을 사용하십시오 ./node_modules/.bin/jest --coverage. 패키지 이름이 package.json에있는 한 정확한 버전의 jest로 실행을 보장 할 수 있습니다.
taystack

변경된 파일에 대해서만 JEST 적용 범위를 얻는 방법은 무엇입니까?
Shanika Ediriweera

적용 범위가 특정 한계 미만인 경우 테스트에 실패하는 쉬운 방법이 있습니까? 해당 SO 질문 : stackoverflow.com/questions/60512167/…
Stefan


88

업데이트 : 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를 호출 할 때 추가하십시오 .


1
coverageFormats 옵션이 제거되었습니다. 매번 json과 html이 모두 생성 된 것 같습니다.

1
--coverage 옵션을 사용하지만 전혀 다른 일은 없습니다.
gbbr

3
(현재) 호출 coverageReporters되며 기본값은 ["json", "lcov", "text"]입니다. facebook.github.io/jest/docs/…
Karsten S.

작동하지 않습니다. 값이 ""json ","html "] 인 알 수없는 옵션"coverageFormats "가 발견되었습니다.
srghma

40

2019 년 1 월 : Jest 버전 23.6

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

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

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

1- npm의 경우 :

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

npm test -- --coverage

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

2- 원사 :

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

yarn test --coverage

1
변경된 파일에 대해서만 JEST 적용 범위를 얻는 방법은 무엇입니까?
Shanika Ediriweera

언제부터 변경 되었습니까? 아마도이 --watch설정 을 사용하고 싶을 것입니다 .
koehn

1
이 답변은 그들의 상태에 대해 많은 가정을합니다 package.json.
airtonix

6

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

새로운 답변 :

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'기능이므로 작동하지 않습니다. 소스 코드를 확인하십시오.


문제는 Jest에 대한 코드 적용 범위를 얻는 방법이었습니다. 이스탄불과 Jest가 함께 작동하지 않는다는 것이 사실 일 수도 있지만 질문에 대한 답변은 아닙니다.
David Raab

0

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


0

package.json 파일 구성

"test": "jest --coverage",

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

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

yarn test

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


-1

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

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

행복한 코딩!


8
원사를 설치할 필요가 없습니다. Yarn은 NPM과 다른 패키지 관리자입니다
Black

-10

Chutzpah 사용해 보기 . 방금 사용했습니다. 그리고 Visual Studio에 통합하는 방법에 대해 블로그했습니다.

이것이 내가 Chutzpah로 코드 커버리지를 수행 한 방법입니다 : http://francorobles.wordpress.com/2014/09/14/code-coverage-with-chutzpah/


Chutzpath는 담요 위에 만들어졌으며 Jest가 작동하지 않는다고 위에서 지정했습니다.
Alex Palcuie

내 방금 일했기 때문에 흥미 롭습니다. francorobles.wordpress.com/2014/09/14/…
francorobles

1
Jest를 사용하지 않고 있으며 기본적으로 every를 조롱합니다 require.
Alex Palcuie
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.