gpt4 book ai didi

code-coverage - 如何使用 Angular CLI 报告所有源文件的覆盖率

转载 作者:行者123 更新时间:2023-12-04 19:29:05 25 4
gpt4 key购买 nike

运行时 ng test --code-coverage覆盖率报告中仅报告正在进行测试的源文件的覆盖率。如何配置检测以包含所有源文件(例如 .ts 文件夹中的所有 src/app 文件)?

我尝试过不同的事情:

  • 关注 https://github.com/angular/angular-cli/issues/1735我尝试替换建议的上下文定义。这在我的情况下根本不起作用。输出大量错误,不执行任何测试
  • 删除 Istanbul 尔作为依赖项并仅依赖于 karma-coverage ,可以在其中配置 includeAllSources: true - 但是如果没有 karma-coverage-istanbul-reporter,Angular CLI 就无法运行
  • 以上与 karma-coverage-istanbul-reporter 的组合作为依赖项 - 与原始设置没有区别

  • 必须有某种方法来检测 Angular CLI 以包含所有源文件。添加空规范似乎乏味且容易出错,因为如果类/源文件未进行测试,则覆盖率根本不会显示,因此您必须手动检查它是否包含在覆盖率报告中。

    任何建议表示赞赏!

    各种资料:

    ng --version
    @angular/cli: 1.4.8
    node: 6.11.3
    os: linux x64
    @angular/animations: 4.4.6
    @angular/common: 4.4.6
    @angular/compiler: 4.4.6
    @angular/core: 4.4.6
    @angular/forms: 4.4.6
    @angular/http: 4.4.6
    @angular/platform-browser: 4.4.6
    @angular/platform-browser-dynamic: 4.4.6
    @angular/router: 4.4.6
    @angular/cli: 1.4.8
    @angular/compiler-cli: 4.4.6
    @angular/language-service: 4.4.6
    typescript: 2.3.4

    包.json:
    "devDependencies": {
    "@angular/cli": "1.4.8",
    "@angular/compiler-cli": "^4.2.4",
    "@angular/language-service": "^4.2.4",
    "@types/jasmine": "~2.5.53",
    "@types/jasminewd2": "~2.0.2",
    "@types/node": "~6.0.60",
    "codelyzer": "~3.2.0",
    "jasmine-core": "~2.6.2",
    "jasmine-jquery": "2.1.1",
    "jasmine-spec-reporter": "~4.1.0",
    "karma": "^1.7.1",
    "karma-chrome-launcher": "~2.1.1",
    "karma-cli": "~1.0.1",
    "karma-coverage": "^1.1.1",
    "karma-coverage-istanbul-reporter": "^1.2.1",
    "karma-htmlfile-reporter": "0.3.5",
    "karma-jasmine": "~1.1.0",
    "karma-jasmine-html-reporter": "^0.2.2",
    "karma-json-reporter": "1.2.1",
    "karma-spec-reporter": "0.0.31",
    "ts-node": "~3.2.0",
    "tslint": "~5.7.0",
    "typescript": "~2.3.3"
    }

    karma.conf.js:
    module.exports = function (config) {
    config.set({
    basePath: '',
    frameworks: ['jasmine', '@angular/cli'],
    plugins: [
    require('karma-jasmine'),
    require('karma-chrome-launcher'),
    require('karma-jasmine-html-reporter'),
    require('karma-coverage'),
    require('karma-spec-reporter'),
    require('karma-htmlfile-reporter'),
    require('karma-json-reporter'),
    //require('karma-coverage-istanbul-reporter'),
    require('@angular/cli/plugins/karma')
    ],
    files: [
    ],
    client:{
    clearContext: false // leave Jasmine Spec Runner output visible in browser
    },
    // coverageIstanbulReporter: {
    // reports: [ 'html', 'text', 'text-summary', 'json' ],
    // fixWebpackSourcePaths: true
    // },

    angularCli: {
    environment: 'dev'
    },
    reporters: ['spec', 'kjhtml', 'html', 'json', 'coverage'],
    preprocessors: {
    'src/app/*.ts': ['coverage']
    },
    htmlReporter: {
    outputFile: 'testresults/index.html',
    pageTitle: 'CRS Frontend Unit-tests - test results'
    },
    jsonReporter: {
    stdout: false,
    outputFile: 'testresults/results.json' // defaults to none
    },
    coverageReporter: {
    dir: 'coverage',
    includeAllSources: true,
    reporters: [
    { type: 'html', subdir: 'html' },
    { type: 'json', subdir: 'json' }
    ]
    },
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ['Chrome'],
    singleRun: true,
    failOnEmptyTestSuite: false
    });
    };

    最佳答案

    如果您使用 angular CLI 1.7.X,请进行以下更改

    ~/src/test.ts

    const context = require.context('./', true, /\/app\/.*\.ts$/);

    ~/src/tsconfig.spec.json
      "include": [
    "**/*.ts",
    "**/*.d.ts"
    ]

    关于code-coverage - 如何使用 Angular CLI 报告所有源文件的覆盖率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46887337/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com