Jest는 테스트를 찾지만 커버리지를 수집하지 않습니다.
다음을 사용하여 이 프로젝트의 테스트 적용 범위를 수집하려고 합니다.
yarn test --coverage # i.e. "react-scripts test --coverage"
농담 설정은 다음과 같습니다.
"jest": {
"collectCoverageFrom": [
"src/**/*.ts*"
],
"coverageThreshold": {
"global": {
"lines": 90,
"statements": 90
}
}
}
그리고 나의 폴더 구조는 다음과 같습니다.
.
├── package.json
├── postcss.config.js
├── public/
├── README.md
├── src/
│ ├── App.css
│ ├── App.test.tsx
│ ├── App.tsx
│ ├── assets/
│ ├── components/
│ │ ├── Emoji/
│ │ │ ├── Emoji.test.tsx
│ │ │ ├── Emoji.tsx
│ │ │ └── index.ts
│ │ └── Home/
│ │ ├── Home.css
│ │ ├── Home.test.tsx
│ │ ├── Home.tsx
│ │ └── index.ts
│ ├── index.css
│ ├── index.tsx
│ ├── react-app-env.d.ts
│ └── serviceWorker.ts
├── tsconfig.json
├── yarn-error.log
└── yarn.lock
Jest는 모든 테스트를 찾을 수 있지만 커버리지를 수집하지 못합니다.
PASS src/components/Home/Home.test.tsx
PASS src/components/Emoji/Emoji.test.tsx
PASS src/App.test.tsx
----------|----------|----------|----------|----------|-------------------|
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s |
----------|----------|----------|----------|----------|-------------------|
All files | 0 | 0 | 0 | 0 | |
----------|----------|----------|----------|----------|-------------------|
Test Suites: 3 passed, 3 total
Tests: 3 passed, 3 total
Snapshots: 0 total
Time: 3.432s
Ran all test suites.
제가 무엇을 빠뜨리고 있나요?커버리지를 이용하려면 설정에 무엇을 추가해야 합니까?
힌트라도 환영합니다:)
시도하다
- 글로벌 패턴 변경
"src/**/*.{js,jsx,ts,tsx}". - 삭제 중
node_modules그 후 실행yarn모든 것을 재설치합니다. - 삭제 중
node_modules그리고.yarn.lock그 후 모든 것을 재설치하여 다른 버그를 발생시켰습니다.이 버그를 특정 의존관계를 설치하려고 했지만 작동하지 않았습니다. - GitHub에서 저장소를 복제하고 새 버전에서 명령을 실행합니다.
- 다른 노드 버전(v10.16.2 및 v11.7.0)으로 전환합니다.
제가 댓글로 말씀드린 빠른 수정은--watchAll대신 다음과 같이 입력합니다.react-scripts test --coverage --watchAll.
나중에 참고할 수 있도록 이상적으로는 이 시스템을--watch변경된 파일에서만 실행되지만 같은 문제가 발생했습니다.이 문제 '--coverage --watch'는 첫 번째 반복 시 모든 파일에 대한 커버리지를 계산해야 하며, 워치 모드에서 실행할 경우 커버리지가 없습니다.Git과 파일 스테이징과 관련이 있는 것 같습니다만, 왜 당신이 아닌 몇몇 사람에게 효과가 있었는지 잘 모르겠습니다.
원래 질문자의 경우 반드시 해결책은 아니지만, 똑같은 문제에 부딪혔고, 이것이 저의 해결책이었습니다.
joke (23에서26으로)업그레이드 할 때 이 문제가 발생하였고 해결방법은--no-cache선택.캐싱된 데이터가 호환되지 않도록 이러한 커버리지리포트에 대해 내부적으로 뭔가 변경을 가했을 가능성이 있습니다.
Linux Mint 19.2에서는 정상적으로 동작하고 있는 것 같습니다.joke 설정을 좀 더 유연한 것으로 변경하는 것이 좋습니다.
"jest": {
"collectCoverageFrom": [
"src/**/*.{js,jsx,ts,tsx}",
"!<rootDir>/node_modules/"
],
"coverageThreshold": {
"global": {
"lines": 90,
"statements": 90
}
}
}
그리고 나서 네 옷을 갈아입고package.json테스트 스크립트(사용 중인 경우)npm(와 함께)yarn그냥 붙이면 돼--coverage예를 들어 다음과 같습니다.yarn test --coverage단,npm무시됩니다).그래서 이렇게 하는 것이 좋습니다.
"test": "react-scripts test --coverage",
또는 다음 중 하나를 사용하는 것이 좋습니다.yarn에 걸쳐서npm. 실을 설치하려면 다음 중 하나의 방법을 사용하십시오.
동작:
제가 도움이 된 건 그게 아니라
npm run test
또는
npm run test --watchall
나는 이렇게 했다:
npm run test a
그리고.
npm run test a -- --coverage
가봤더니...Jest 구성에는 다음 파라미터가 하나 더 없습니다.
collectCoverage: true
, 이었다.rootDirpackage.json 내을 실시합니다(package)으로 설정했습니다.존손tests 농담은 src/실제 소스코드가 있던 폴더입니다.에 대해 것이 목적이었다.
패키지.구식
"jest": {
"rootDir: "tests"
}
패키지.신규
"jest": {
"roots": [
"src",
"tests"
]
}
플래그가 문제인 것 같습니다 --watchAll false로 설정하지 않으면 커버리지가 생성되지 않습니다.
react-scripts test --reporters=jest-junit --reporters=default --coverage --coverageDirectory='testresults/coverage' --coverageReporters=cobertura --coverageReporters=lcov --watchAll=false
collectCoverageFromjest.config.tsfilename을 클릭합니다.
같은 경우에는요.<rootDir>누락되어 있어 추가 후 정상적으로 동작하고 있습니다.
"collectCoverageFrom": [ "<rootDir>/**/*.{js,jsx,ts,tsx}" ]
네이티브을 리액트 네이티브/엑스포 을 사용하여 .cacheDirectory: '.jest/cache'..jest디렉토리가 문제를 해결했습니다.
할 수 .npm install 위치 Windows 캐~ ( ~\AppData\\npm-cache)
저도 당신과 비슷한 문제가 있었고 이것이 최근에 찾은 해결책입니다.포장되어 있습니다.json collectCoverageFrom 및 coverageReporters를 다음과 같이 설정해야 합니다.
{ "jest": {
"collectCoverage": true,
"coverageReporters": [
"cobertura",
"lcov",
"text"
],
"collectCoverageFrom": [
"src/**/*.{ts,tsx,js,jsx}",
"!src/**/*.d.ts"
]
}
npm을 사용하고 있기 때문에:
npm test --coverage
그나저나, 혹시 궁금하실까 봐 Vite를 쓰고 있어요.
1' - jest.config file.js(존재하는 경우)를 삭제합니다.
2' - 기본 Jest 설정은 패키지에만 보관합니다.json 파일이므로 컴파일러의 두 설정 모두 혼동하지 않습니다.
다음과 같습니다.
"jest": {
"preset": "jest-expo",
"transformIgnorePatterns": [
"node_modules/(?!((jest-)?react-native|@react-native(-community)?)|expo(nent)?|
@expo(nent)?/.*|@expo-google-fonts/.*|react-navigation|
@react-navigation/.*|@unimodules/.*|
unimodules|sentry-expo|native-base|react-native-svg)"
],
"collectCoverage": true,
"collectCoverageFrom": [
"**/*.{ts,tsx,js,jsx}",
"!**/*/*.d.ts",
"!**/coverage/**",
"!**/node_modules/**",
"!**/babel.config.js",
"!**/jest.setup.js"
]
}
3★ - 이러한 설정이 패키지에 포함되어 있습니다.json 파일, Jest를 실행하기 위한 스크립트를 구분합니다.하나는 테스트용, 다른 하나는 커버리지 수집용
다음과 같습니다.
"scripts": {
...,
"test": "jest --watch --coverage=false",
"testWithCoverage": "jest"
}
Node.js에서도 패키지에 collectCoverageFrom을 추가합니다.json이 내가 발견되지 않은 파일을 찾는 것을 도와줬어.
제 소포요.json,
{
...
"jest": {
"testEnvironment": "node",
"coveragePathIgnorePatterns": ["/node_modules/", "api-testing"],
"testPathIgnorePatterns": ["/node_modules/", "api-testing"],
"collectCoverageFrom": ["**/controllers/*.js"]
}
}
collectCoverageFrom을 추가하기 전에
collectCoverageFrom 추가 후
기본적으로 collectCoverageFrom을 추가하지 않고 테스트 케이스가 있는 파일(일반 명명 수녀원에 있는 .test.js 파일)만 포함됩니다.
패키지에 추가합니다.json
"jest": {
"testPathIgnorePatterns": [
"<rootDir>/path/to/ignore/"
]
}
이렇게 하면 이러한 명령어를 많이 지정하지 않아도 문제가 해결됩니다.
언급URL : https://stackoverflow.com/questions/57451028/jest-finds-tests-but-doesnt-collect-coverage
'programing' 카테고리의 다른 글
| 플러그인을 멀티사이트에 적응시키는 방법 (0) | 2023.03.04 |
|---|---|
| Wordpress 페이지의 형제 페이지 목록을 검색하려면 어떻게 해야 합니까? (0) | 2023.03.04 |
| 반응 후크 사용효과 종속성 배열 (0) | 2023.03.04 |
| Flyway용 이행 SQL 자동 생성 (0) | 2023.03.04 |
| Panda Dataframe을 중첩된 JSON으로 변환 (0) | 2023.03.04 |

