我已经尝试了几个小时,以便为我的新vue(基于打字稿的)项目(由vue-cli v3生成)启动并运行伊斯坦布尔代码覆盖率报告。
每当我运行测试时:(nodemon --exec nyc vue-cli-service test:unit)仅包含.ts文件,即使我已明确设置nyc应包括这些文件:
"nyc": {
"check-coverage": true,
"per-file": true,
"lines": 80,
"instrument": true,
"sourceMap": true,
"statements": 80,
"functions": 80,
"branches": 80,
"include": [
"apollo-server/**/*.{ts,vue}",
"apollo-server/*.vue",
"src/**/*.{ts,vue}",
"src/*.vue"
],
"exclude": [
],
"reporter": [
"lcov",
"text",
"text-summary"
],
"extension": [
".ts",
".vue"
],
"cache": true,
"all": true
}
Run Code Online (Sandbox Code Playgroud)
我也曾尝试设置nyc.instrument与nyc.sourceMap假以允许像这样的WebPack配置自定义加载器:
module.exports = {
baseUrl: process.env.NODE_ENV === 'production'
? '/'
: '/',
configureWebpack: config => {
// if (process.env.NODE_ENV === "coverage") …Run Code Online (Sandbox Code Playgroud) 我很难用Jest设置Vue CLI 3以显示测试范围。我已竭尽所能使其正常运行,但仍未显示任何内容:
Ran all test suites.
----------|----------|----------|----------|----------|-------------------|
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s |
----------|----------|----------|----------|----------|-------------------|
All files | 0 | 0 | 0 | 0 | |
----------|----------|----------|----------|----------|-------------------|
=============================== Coverage summary ===============================
Statements : Unknown% ( 0/0 )
Branches : Unknown% ( 0/0 )
Functions : Unknown% ( 0/0 )
Lines : Unknown% ( 0/0 )
Run Code Online (Sandbox Code Playgroud)
以下是我的配置摘录:
jest.config.js:
Ran all test suites.
----------|----------|----------|----------|----------|-------------------|
File | % Stmts | …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 nyc + mocha 来获取使用 es6 模块语法的单元测试的测试覆盖率。当我运行时mocha my_test.mjs一切正常。my_test.mjs 中的依赖项(使用本机导入)已正确解析。但是当我在这个命令前面加上 nyc:nyc mocha my_test.mjs它不再工作,抛出这个错误:
node_modules/mocha/lib/esm-utils.js:6
return import(url.pathToFileURL(file));
^^^^^^
SyntaxError: Unexpected token import
at Module._extensions..js (module.js:663:10)
at Object.replacementCompile (nodejs/core/tests/cache.install.nodejs_install/node_modules/append-transform/index.js:60:13)
at Module._extensions..js (module.js:663:10)
Run Code Online (Sandbox Code Playgroud)
我尝试了不同的变体nyc --require esm mocha my_test.mjs或强制--experimental-modules使用节点,但似乎没有任何效果。
注意,我使用的是最新版本的node、nyc和mocha
任何想法?
我正在尝试将覆盖率报告生成添加到打字稿库项目中。
布局包括以下目录:
project
?? src
? ?? lib ## project code (typescript), *.tsx
? ?? test ## test specs (typescript), *.spec.tsx
? ?? @types ## types I made for a few dependencies that didn't have them
?? build
?? lib ## compiled project code (ES5 + type info, with inline sourcemaps), *.js and *.d.ts
?? test ## compiled test specs (ES5 + type info, with inline sourcemaps), *.spec.js and *.spec.d.ts
Run Code Online (Sandbox Code Playgroud)
我有一个测试脚本,package.json它似乎可以正常工作:
"test": "mocha --reporter mocha-multi --reporter-options mocha-multi=mocha-multi.json --recursive …Run Code Online (Sandbox Code Playgroud) 我正在为 CLI 编写集成测试。所有单元测试都是使用 Jest 编写的,开箱即用,无需任何配置即可生成代码覆盖率,但不幸的是,它不会检测子进程,例如通过 Node 的 spawn 和 fork 命令执行。
我曾尝试按照GitHub 问题上的评论中的建议将纽约引入其中,但它对我不起作用。
我尝试过各种配置(基于上述最初的建议以及这些问题的想法:1、2),但是我要么根本没有覆盖统计数据,要么只覆盖我的单元测试,而不是生成子的集成测试流程。
my 的相关部分package.json配置了 nyc 和 Jest:
"scripts": {
"test": "cross-env NODE_ENV=test nyc --clean jest --coverage",
},
"jest": {
"verbose": true,
"testURL": "http://localhost/",
"globalSetup": "./jest.setup.js",
"transform": {
"^.+\\.js$": "babel-jest"
},
"collectCoverage": false
},
"nyc": {
"include": [
"packages/*/src/**/*.js"
],
"reporter": [
"html"
]
},
Run Code Online (Sandbox Code Playgroud)
我用来execa运行子进程并执行以下操作:
await execa("nyc --reporter none node", args);
Run Code Online (Sandbox Code Playgroud) 我在 Windows 10 上使用带有 Visual Studio Code 的 TypeScript 来开发 NPM 模块。我将 mocha/chai 与 nyc (istanbul) 结合使用进行单元测试和代码覆盖。
对于我的一些测试,我想使用 chai-bytes 更容易地比较缓冲区。不幸的是,chai-bytes 模块中没有类型定义文件,@types/chai-bytes 中也没有可用的定义。
因此,我为 chai-bytes 插件编写了自己的类型定义文件(非常简单),但在执行过程中npm test出现以下错误:
TSError: ? Unable to compile TypeScript:
test/utls/BitArray-test.ts(3,23): error TS7016: Could not find a declaration file for module 'chai-bytes'. 'C:/Users/<user>/Source/Repos/velux-api/node_modules/chai-bytes/index.js' implicitly has an 'any' type.
Try `npm install @types/chai-bytes` if it exists or add a new declaration (.d.ts) file containing `declare module 'chai-bytes';`
test/utls/BitArray-test.ts(48,38): error TS2339: Property 'equalBytes' does not exist on type …Run Code Online (Sandbox Code Playgroud) 我正在尝试将我的istanbul代码覆盖率命令转换为nyc.
现在似乎nyc是 istanbul 测试覆盖率库的命令行界面。
在伊斯坦布尔,我们会得到这样的报道:
istanbul cover foo.js --dir coverage
Run Code Online (Sandbox Code Playgroud)
然后我们会得到一个像这样的综合报告:
istanbul report --dir coverage --include **/*coverage.json lcov
Run Code Online (Sandbox Code Playgroud)
所以我试图确定等效的命令是什么nyc-
要获得 nyc 的报道,我似乎可以这样做:
nyc node foo.js # writes coverage data to .nyc_output
Run Code Online (Sandbox Code Playgroud)
但是当我查看 .nyc_output 时,有一堆 .json 文件,但它们似乎没有任何数据。
如果我尝试获取报告,请使用
nyc report --reporter=lcov
Run Code Online (Sandbox Code Playgroud)
该报告命令似乎没有做任何事情,.nyc_output目录看起来和以前一样:
注意我可以使用配置文件并避免在命令行中使用额外的命令。
我想要获得单元测试和集成测试的组合覆盖。
我有单独的单元测试和集成测试文件夹。在我的管道 ci 中,我有一个单独的阶段用于单元测试和集成测试,因为集成测试需要依赖项。
包.json
{
"unit-test": "nyc mocha --timeout 5000000 -r ts-node/register --project tsconfig.json test/unit/*.test.ts --exit",
"integration-test": "nyc mocha --timeout 5000000 -r ts-node/register --project tsconfig.json test/integration/*.test.ts --exit",
}
Run Code Online (Sandbox Code Playgroud)
现在我分别收到了他们两个的报道报告,但我可以看到它并不能真实反映所有报道。
有什么办法我可以合并覆盖范围摘要吗?这可能意味着我需要将管道中的两个阶段结合起来?
我正在对mocha我的 js 代码进行单元测试,该代码babel也在使用。我用来nyc做报道。但最终的结果却是显示空。
为什么它显示所有文件 0 即使我的测试文件需要redux.js和number-reducer.js文件?
我的 package.json 中的测试脚本是
{
...
"scripts": {
...
"test": "cross-env NODE_ENV=test npm run lint && nyc --reporter=lcov --reporter=text mocha",
"coverage": "nyc report --reporter=text-lcov | coveralls"
},
...
"devDependencies": {
"@babel/core": "~7.3.4",
"@babel/preset-env": "~7.3.4",
"@babel/register": "~7.0.0",
"babel-loader": "~8.0.5",
"babel-plugin-istanbul": "~5.1.1",
"babel-polyfill": "~6.26.0",
"chai": "~4.2.0",
...
"cross-env": "~5.2.0",
"eslint": "~5.15.0",
"mocha": "~6.0.0",
"nyc": "~13.3.0",
...
"webpack": "~4.29.4",
"webpack-cli": "~3.2.1"
},
"nyc": {
"require": [
"@babel/register"
], …Run Code Online (Sandbox Code Playgroud) 我一直在尝试让 Cypress 代码覆盖率与我的 Angular 生产项目一起使用,但没有成功。
为了尝试帮助诊断它,我创建了一个最小的实施项目,以确保我没有在生产版本中引入任何奇怪的东西,我不认为我是这样,因为同样的问题仍在发生。它开始让我发疯了!
我使用了一些参考资料,据我所知,我已经准备好了所需的东西:
据我所知,Angular 和 Cypress 端都已连接,并且正在 .nyc_output 文件夹中获取输出和覆盖率报告。然而,该报告并未表明打字稿行覆盖率或包括这些统计数据。
我看过这个,但似乎没有帮助。
代码检测(webpack扩展+ angular.json):
module.exports = {
module: {
rules: [
{
test: /\.(js|ts)$/,
loader: "istanbul-instrumenter-loader",
options: { esModules: true },
enforce: "post",
include: require("path").join(__dirname, "..", "src"),
exclude: [
/\.(e2e|spec)\.ts$/,
/node_modules/,
/(ngfactory|ngstyle)\.js/,
],
},
],
},
};
Run Code Online (Sandbox Code Playgroud)
"serve": {
"builder": "ngx-build-plus:dev-server",
"options": {
"browserTarget": "architecture-testing:build",
"extraWebpackConfig": "./cypress/coverage.webpack.js",
"sourceMap": true
},
"configurations": {
"production": {
"browserTarget": "architecture-testing:build:production"
}
}
}
Run Code Online (Sandbox Code Playgroud)
Cypress 似乎正在记录并保存报道:
const registerCodeCoverageTasks …Run Code Online (Sandbox Code Playgroud)