当我尝试生成 Jenkins 管道作业的综合覆盖率报告时,发生了一些奇怪的事情。
我有一个 Nx 支持的 Angular monorepo,并且正在生成其中包含的所有库和项目的覆盖率报告。
我已将以下脚本放在一起来运行测试,然后用于nyc合并和报告操作。
const { execSync } = require('child_process');
const packageJSON = require("../package.json");
const EXCLUDE_UNIT_TEST = packageJSON.buildData.excludeUnitTest;
const run = (commands) => {
commands.forEach((command) => execSync(command, { stdio: 'inherit' }));
};
run([
`rm -rf coverage`,
`npx nx run-many --target=test --all --maxWorkers=4 --exclude=${EXCLUDE_UNIT_TEST} --coverage=true`,
`npx copyfiles -f 'coverage/**/*coverage.json' coverage/project-parts`,
`npx nyc merge coverage/project-parts coverage/nyc/combined.json`,
`npx nyc report --reporter html-spa --reporter lcov -t coverage/nyc --report-dir coverage/combined`
]);
Run Code Online (Sandbox Code Playgroud)
这在本地对我来说效果很好,我看到我的所有库/项目都有一个 HTML 报告(lcov 格式和 html-spa 报告)。
但是,当在 …
我在https://github.com/danielbush/webpack-babel-karma-sourcemap-coverage有一个测试项目。
\n\n它由两个简单的源文件组成src/,其中一个有一个故意错误(src/lib2.js )。
我想使用 babel 进行 webpack 和从 ES6 到 ES5 的转译,并使用 Karma 在此包上运行 Mocha 测试。
\n\n我已经添加了源映射并对此进行了测试,以便我可以看到原始文件的行号。
\n\n对我来说,堆栈跟踪如下所示:
\n\n21 02 2016 16:03:15.445:INFO [karma]: Karma v0.13.21 server started at http://localhost:9876/\n21 02 2016 16:03:15.451:INFO [launcher]: Starting browser Chrome\n21 02 2016 16:03:16.551:INFO [Chrome 48.0.2564 (Linux 0.0.0)]: Connected on socket /#yRS32ons0_2HGhrwAAAA with id 3072946\n\nSTART:\n lib1\n \xe2\x9c\x96 should return 1\n\nFinished in 0.015 secs / 0.001 secs\n\nSUMMARY:\n\xe2\x9c\x94 0 tests completed\n\xe2\x9c\x96 1 test failed\n\nFAILED TESTS:\n lib1\n \xe2\x9c\x96 …Run Code Online (Sandbox Code Playgroud) 尽管我可以使代码覆盖率测量(单元测试覆盖的文件和代码行的百分比)正常工作,但我无法使其在编辑器中突出显示所覆盖的代码。
我有业力覆盖
提前致谢。
编辑:根据要求添加了屏幕截图。抱歉我不得不模糊一些信息。
我正在尝试为我的 Node 项目运行代码覆盖率,但由于某种原因它不起作用。我正在使用 chai+mocha+istanbul,也尝试过 nyc。我的代码同时具有 ES5 和 ES6 组件,并且我为此使用编译器标签。测试运行良好,但代码覆盖率没有显示任何内容。
11 passing (15ms)
----------|----------|----------|----------|----------|----------------|
File | % Stmts | % Branch | % Funcs | % Lines |Uncovered Lines |
----------|----------|----------|----------|----------|----------------|
All files | Unknown | Unknown | Unknown | Unknown | |
----------|----------|----------|----------|----------|----------------|
Run Code Online (Sandbox Code Playgroud)
我的 package.json 的相关部分:
"test": "mocha test/app.test.js --compilers js:babel-core/register",
"test:cover": "nyc npm t",
"coverage": "babel-node ./node_modules/.bin/isparta cover mocha -- --compilers js:babel-register",
"cover": "cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text mocha --compilers js:babel-register test/*.js"
Run Code Online (Sandbox Code Playgroud)
正如您可能会发现的那样,我尝试了不同的组合和替代方案,但似乎没有什么对我有用。
开发依赖项的相关部分:
"babel-cli": "^6.16.0",
"babel-core": "^6.26.0",
"babel-loader": …Run Code Online (Sandbox Code Playgroud) 我有一个带有 JavaScript(主要是 React)前端的Ruby on Rails 应用程序。rspec功能测试套件练习了前端 JavaScript 代码的重要部分,但我对此没有任何可见性。同时,JavaScript 单元测试 - 运行方式jest- 提供 JavaScript 覆盖映射。
我想要rspec基于浏览器的集成测试的累积 JavaScript 覆盖率结果,但我没有找到任何示例。nyc,标准的 JS 覆盖库,应该能够实现这一点——可能与babel-plugin-istanbul.
我正在使用 Angular 6 和 karma 覆盖伊斯坦布尔记者来查看代码覆盖率。
它在代码覆盖率报告中仅显示 .ts 文件,这可能会产生误导,因为 HTML 模板也可以包含代码逻辑。
是否有将 HTML 代码包含到单元测试代码覆盖率中的方法?
我目前正在为使用 @vue/cli-plugin-unit-mocha 运行单元测试的 Vue 项目设置测试环境。该项目使用 TypeScript 和 .vue 单文件组件。我已经成功地设置了我的项目来运行单元测试并为 TypeScript 文件生成代码覆盖率报告,但是当我尝试为 SFC 添加测试时,我收到一个错误。
为了生成覆盖率报告,我使用 nyc + istanbul-instrumenter-loader。我认为我的配置对于常规 Typescript 文件是正确的,但是当它必须处理 .vue 文件时 istanbul-instrumenter-loader 会引发错误:
error in ./src/pages/rapportages/components/reports-grid/reports-grid-container.vue?vue&type=script&lang=ts&
Module build failed (from ./node_modules/istanbul-instrumenter-loader/dist/cjs.js):
TypeError: Cannot read property 'fileCoverage' of undefined
Run Code Online (Sandbox Code Playgroud)
在我看来 .vue 文件没有被正确转换/转译。
这是我的 package.json:
{
...
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint",
"test": "vue-cli-service test:unit src/**/__tests__/*.spec.ts --require mocha-setup.js",
"test:ci": "yarn run test --reporter mocha-teamcity-reporter",
"test:cover": "cross-env NODE_ENV=coverage nyc vue-cli-service test:unit src/**/__tests__/*.spec.ts --require mocha-setup.js"
}
...
"nyc": …Run Code Online (Sandbox Code Playgroud) 我有 VueJS 应用程序和 Cypress 用于测试。我需要有代码覆盖率信息。
在 Cypress 中运行测试正在生成看似正确的 .nyc_output/out.json 文件,其中包含某些行执行的次数。
如何生成正确的报告?
tree .nyc_output/
Run Code Online (Sandbox Code Playgroud)
我尝试使用Cypress和istanbul nyc在Angular 8项目中设置代码覆盖率。
我设法对代码进行了检测(__coverage__正确设置了全局变量):
以及.nyc_output运行后生成的覆盖文件cypress:open
但是生成的覆盖率报告是空的:
$ cat coverage/coverage-final.json
{}
Run Code Online (Sandbox Code Playgroud)
执行命令时结果相同:
$ npx nyc report --report-dir ./coverage --temp-dir .nyc_output --reporter=text
----------|----------|----------|----------|----------|-------------------|
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s |
----------|----------|----------|----------|----------|-------------------|
All files | 0 | 0 | 0 | 0 | |
----------|----------|----------|----------|----------|-------------------|
Run Code Online (Sandbox Code Playgroud)
这是我的 package.json devDependencies:
"devDependencies": {
"@angular-devkit/build-angular": "^0.803.3",
"@angular-devkit/build-optimizer": "^0.803.3",
"@angular/cli": "^8.3.3",
"@angular/compiler-cli": "8.2.5",
"@angular/language-service": "8.2.5",
"@briebug/cypress-schematic": …Run Code Online (Sandbox Code Playgroud) 我正在使用 Typescript 创建一些带有 Lit 元素的 Web 组件。使用 karma 捆绑和单元测试的 Webpack。
我注意到覆盖率报告已经全部出来了:
我试过/* istanbul ignore next */在装饰器之前添加,但是 tsc 删除了它。
关于如何更新配置以防止装饰器被包含在覆盖率报告中的任何想法?
来源:
import {customElement, html, LitElement, property} from "lit-element";
import Style from "./style.less";
@customElement("webcom-voorbeeld")
export class WebcomVoorbeeld extends LitElement {
@property({type: String, attribute: "attribute"})
attribute = "default";
@property({type: Number})
property = 0;
static get styles() {
return [Style];
}
constructor() {
super();
}
render() {
return html
`<div class="webcom webcom-voorbeeld">
<p class="heading font-bold webcom-clr-blue-02">New Voor-Beeld component</p>
<div class="slot …Run Code Online (Sandbox Code Playgroud)