我正在为 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) 我正在尝试为在 docker 容器中运行的单元测试设置覆盖范围。但是,覆盖率报告无法在容器内按预期生成。但是,当命令在容器外部(在 Mac OSX 和 CentOS 上)运行时,它们会成功生成。
我将代码库安装到图像中预先存在的路径。
该图像基于节点:8.11.4
karma v3.1.4
karma-coverage v1.1.2
karma-coverage-istanbul-reporter v2.0.4
karma-webpack v4.0.0-rc.5
istanbul-instrumenter-loader v.3.0.1 。
尝试梳理问题:
__dirname在 karma.conf.js 中将basePath 设置为path.join使用 karma.conf.js 和 webpack 使用的入口点规范所有路径。coverage和istanbul-coverage记者。-u $(id -u):$(id -g)并没有什么区别您想看到什么代码?
docker run --privileged \
-u $(id -u):$(id -g) \
--mount type=bind,source=$(pwd),dst=/home/node/test/ \
-it $DOCKER_IMAGE \
/bin/bash -c …Run Code Online (Sandbox Code Playgroud) 我有一个 Angular 应用程序,我正在尝试进行测试,但是找到需要覆盖的地方是一场噩梦。
输出显示如下:
=============================== Coverage summary ===============================
Statements : 91.67% ( 22/24 )
Branches : 75% ( 3/4 )
Functions : 75% ( 3/4 )
Lines : 90.48% ( 19/21 )
================================================================================
Run Code Online (Sandbox Code Playgroud)
有没有办法查看这些语句、分支、函数和行没有被覆盖的地方?
例如一些输出说
Statements:
1. file: some/file/name.js line:03
2. file: some/file/name.js line:06
Run Code Online (Sandbox Code Playgroud)
那可能吗?
谢谢
我有一个 JS 项目,它提供了一组利用 Express 和典型的 Express/路由器模式的端点。
const express = require('express');
const router = new express.Router();
router.post('/', async (req, res, next) => { });
router.get('/:abc', async (req, res, next) => { });
module.exports = router;
Run Code Online (Sandbox Code Playgroud)
npm start我可以成功启动用于调用的服务器node ./src/index.js并使端点可用https://localhost:8080
我还可以利用 Postman 等工具或 Karate 等自动化工具成功测试这些端点。
我遇到的问题是,当通过http://localhost:8080行使产品源 JS 时,我似乎无法使用 Istanbul 收集代码覆盖率。
我已经尝试npm start过其次是nyc --all src/**/*.js gradlew test. 后者是测试端点的自动化。这导致 0% 的覆盖率,我假设这是由于没有使用 npm start 运行 nyc 造成的。
接下来我尝试nyc --all src/**/*.js npm start并注意到一些覆盖范围,但这只是启动 Express 服务器的覆盖范围。
接下来,我尝试了 …
我正在尝试使用 Jest 来测试我的代码。它工作得很好,直到我尝试从测试中排除类方法。
\nquerySelector() 调用是我想跳过此方法进行测试的原因(除非我在浏览器中运行脚本,否则“文档”显然为空)
\n我尝试了这个解决方案,这似乎是最受建议的解决方案:
\n /* istanbul ignore next */\n appendNewInputFields() {\n\n const howMany = Number(document.querySelector('#items-to-add').value);\n \n [...Array(howMany)].forEach( i => {\n const newInputField = this.createNewItemInputField();\n this.inputItemsContainerNode.append(newInputField);\n });\n }\nRun Code Online (Sandbox Code Playgroud)\n但测试一直失败,并且这条线/* istanbul ignore next */ 似乎被忽略了。
我还尝试将注释放在函数签名及其主体之间(正如此处建议的那样),但没有运气:
\n FAIL js/DOMManager.test.js\n \xe2\x97\x8f Test suite failed to run\n\n TypeError: Cannot read property 'value' of null\n\n 135 | appendNewInputFields() /* istanbul ignore next */ {\n 136 |\n > 137 | const howMany = Number(document.querySelector('#items-to-add').value);\n | ^\n 138 | …Run Code Online (Sandbox Code Playgroud) 我正在使用Gherkin语法的行为驱动开发 (BDD) 方法设计我的测试,并使用Cucumber JS运行我的测试。
我正在使用Cucumber Studio共享报告并与我的业务利益相关者和管理层保持同步。
最近,我需要获取该项目的测试覆盖率报告,并进行了一些研究,但无法决定使用哪个库来获取覆盖率报告以及如何获取。
到目前为止,我已经找到了JSCover、Cucumber Reports和Istanbul来获取测试覆盖率报告,但我不确定如何准确使用它们,以及哪种最适合我的情况与 Cucumber JS 一起使用。
我karma用作茉莉花测试运行器,instanbul作为代码覆盖工具.一切都很完美,但有一个问题 - 有什么方法可以改变创建报告的路径吗?
即我得到的Chrome /coverage/Chrome%2035.0.1916%20(Windows%207)/index.html; 我会更开心/coverage/Chrome/index.html
任何建议非常感谢.
我有用ES6编写的Node代码,我通过发布测试mocha --harmony.测试很好 - 一切正常.
现在我想添加coverage和istanbul,但是我遇到了第一个箭头函数的错误:
No coverage information was collected, exit without writing coverage information
c:\Users\Guy\Code\alpha-dev\tests\helpers.js:12
setTimeout(() => {
^
SyntaxError: Unexpected token )
at exports.runInThisContext (vm.js:73:16)
at Module._compile (module.js:443:25)
at Module._extensions..js (module.js:478:10)
at Object.Module._extensions..js (c:\Users\Guy\Code\alpha-dev\node_modules\istanbul\lib\hook.js:101:13)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Module.require (module.js:365:17)
Run Code Online (Sandbox Code Playgroud)
这是我试过的:
"./node_modules/.bin/istanbul" cover "./node_modules/mocha/bin/_mocha" -- --harmony tests -R spec我如何运行istanbul来涵盖使用ES6功能编写的测试?我错过了什么?
我正在尝试在TeamCity构建服务器上运行Angular CLI项目的单元测试.
如果我使用命令:
ng test --single-run --code-coverage
Run Code Online (Sandbox Code Playgroud)
然后,正如预期的那样,我得到了测试覆盖率报告,但是各个测试结果没有显示在TeamCity中.
如果我打开TeamCity报告:
ng test --single-run --code-coverage --reporters teamcity
Run Code Online (Sandbox Code Playgroud)
然后测试通过并且TeamCity报告完美地工作,但它无声地生成代码覆盖率报告.此行为在我的本地计算机上是可重现的,因此它与构建服务器的配置方式无关.
有这两个选项应该互相排斥的原因吗?
注意 - 这与在TeamCity上为Karma配置代码覆盖率报告不同.如果报告在那里,那么TeamCity会正确显示它,但如果我打开TeamCity报告标志,那么coverage文件夹就不存在了.
附加信息:
业力配置:
// Karma configuration file, see link for more information
// https://karma-runner.github.io/0.13/config/configuration-file.html
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-istanbul-reporter'),
require('@angular/cli/plugins/karma'),
require('karma-teamcity-reporter')
],
client:{
clearContext: false // leave Jasmine Spec Runner output visible in browser
},
files: [
{ pattern: './src/test.ts', watched: false …Run Code Online (Sandbox Code Playgroud) 我们正在尝试为我们的角度应用程序制作SonarQube代码覆盖率报告.我们使用Karma生成代码覆盖率报告并将其导入SonarQube分析器.
SonarQube已经为我们的项目提供了C#覆盖,现在我们也希望添加JavaScript代码覆盖.
Teamcity调用,Karma和它创建代码覆盖并将lcov文件和报告文件放入src\Planning.Spa\Coverage\report文件夹.
LCOV文件
TN:
SF:E:/a03/work/bb52cb33e083fc9/src/Planning.Spa/Offer/app/app.component.js
FN:5,(anonymous_1)
FN:6,AppComponent
FN:8,(anonymous_3)
FN:9,(anonymous_4)
Run Code Online (Sandbox Code Playgroud)
Teamcity具有以下MSBuild参数,用于生成C#代码覆盖率和JavaScript覆盖率.
SonarQube MSBuild配置
$sonar=%system.MSBUILD_SONARQUBE_RUNNER%\MSBuild.SonarQube.Runner.exe
begin /k:"com.test:Test" /n:"MyProject" /v:"%build.number%"
/d:sonar.cs.dotcover.reportsPaths="$coverageReport"
/d:sonar.cs.nunit.reportsPaths="$testResults"
/d:sonar.javascript.lcov.reportPaths="coverage\report\lcov.info"
Run Code Online (Sandbox Code Playgroud)
在运行SonarQube分析时,我们收到以下错误
[14:35:56][Step 13/13] 14:35:56.243 WARN: Could not resolve 114 file paths in
[E:\a03\work\bb52cb33e083fc9\src\Planning.Spa\coverage\report\lcov.info],
first unresolved path: E:/a03/work/bb52cb33e083fc9/src/Planning.Spa/Offer/app/app.component.js
Run Code Online (Sandbox Code Playgroud)
我们没有找到使用MSBuild runner运行C#和JavaScript的任何示例.也找不到任何与此相关的答案Could not resolve file paths
我们正努力让它在过去两周内发挥作用,但却找不到任何有用的示例或答案.类似的问题在这里和这里都没有答案
更新声纳分析更多信息
[14:35:43][Step 13/13] 14:35:43.751 INFO: Base dir: E:\a03\work\bb52cb33e083fc9\src\Planning.Spa
[14:35:43][Step 13/13] 14:35:43.751 INFO: Working dir: E:\a03\work\bb52cb33e083fc9\.sonarqube\out\.sonar\com.Planning_com.Planning_6CC487F0-8283-4351-9B65-F1698B1B804E
[14:35:43][Step 13/13] 14:35:43.755 INFO: Source paths: Offer/App/app.component.js, Offer/App/app.component.js.map, Offer/App/Common/order-by.pipe.js
[14:35:43][Step 13/13] 14:35:43.755 …Run Code Online (Sandbox Code Playgroud) istanbul ×10
node.js ×6
javascript ×3
jestjs ×2
karma-runner ×2
angular ×1
angular-cli ×1
cucumberjs ×1
docker ×1
ecmascript-6 ×1
express ×1
jscoverage ×1
karate ×1
mocha.js ×1
nyc ×1
sonarjs ×1
sonarqube ×1
teamcity ×1
ubuntu ×1