programing

Jest는 테스트를 찾지만 커버리지를 수집하지 않습니다.

mytipbox 2023. 3. 4. 13:57
반응형

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.

제가 무엇을 빠뜨리고 있나요?커버리지를 이용하려면 설정에 무엇을 추가해야 합니까?

힌트라도 환영합니다:)

시도하다

  1. 글로벌 패턴 변경"src/**/*.{js,jsx,ts,tsx}".
  2. 삭제 중node_modules그 후 실행yarn모든 것을 재설치합니다.
  3. 삭제 중node_modules그리고.yarn.lock그 후 모든 것을 재설치하여 다른 버그를 발생시켰습니다.이 버그를 특정 의존관계를 설치하려고 했지만 작동하지 않았습니다.
  4. GitHub에서 저장소를 복제하고 새 버전에서 명령을 실행합니다.
  5. 다른 노드 버전(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 collectCoverageFromcoverageReporters를 다음과 같이 설정해야 합니다.

{   "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 추가 후

collectCoverageFrom 추가 후

기본적으로 collectCoverageFrom을 추가하지 않고 테스트 케이스가 있는 파일(일반 명명 수녀원에 있는 .test.js 파일)만 포함됩니다.

패키지에 추가합니다.json

"jest": {
    "testPathIgnorePatterns": [
      "<rootDir>/path/to/ignore/"
    ]
  }

이렇게 하면 이러한 명령어를 많이 지정하지 않아도 문제가 해결됩니다.

언급URL : https://stackoverflow.com/questions/57451028/jest-finds-tests-but-doesnt-collect-coverage

반응형