Jest的代码覆盖率

时间:2014-07-18 13:10:02

标签: javascript jestjs

有没有办法在Javascript Jest测试框架中建立基于Jasmine的代码覆盖率?

内部框架does not打印出它获得的代码覆盖率。我也尝试过使用IstanbulblanketJSCover,但这些都不起作用。

11 个答案:

答案 0 :(得分:70)

更新:7/20/2018 - 为coverageReporters添加了链接和更新名称。

更新:8/14/2017 - 这个答案完全过时了。现在就看看Jest文档吧。他们有关于如何执行此操作的官方支持和文档。

@hankhsiao有一个分叉的回购,伊斯坦布尔与Jest合作。将其添加到您的开发依赖项

 "devDependencies": {
     "jest-cli": "git://github.com/hankhsiao/jest.git"
 }

还要确保在package.json jest条目中启用了coverage,您还可以指定所需的格式。 (HTML非常糟糕)。

 "jest": {
     "collectCoverage": true,
     "coverageReporters": ["json", "html"],
 }

请参阅Jest documentation了解coverageReporters(默认为["json", "lcov", "text"]

或者在调用jest时添加--coverage

答案 1 :(得分:53)

使用 Jest 21.2.1 时,我可以在命令行中看到代码覆盖率,并通过将--coverage传递给Jest脚本来创建coverage目录。以下是一些例子:

我倾向于在本地安装Jest,在这种情况下命令可能如下所示:

npx jest --coverage

我假设(虽然尚未确认),如果我全局安装了Jest,这也会有效:

jest --coverage

非常稀疏的文档是here

当我导航到 coverage / lcov-report 目录时,我发现了一个可以加载到浏览器中的 index.html 文件。它包括在命令行打印的信息,以及附加信息和一些图形输出。

答案 2 :(得分:19)

2019年1月:Jest版本23.6

对于最近正在研究此问题的任何人尤其是如果直接使用npm或yarn进行测试

当前,您无需更改配置选项

根据jest official website,您可以执行以下操作来生成覆盖率报告:

1-对于npm:

您必须在传递jest的--coverage参数之前放入 public void Configure(IApplicationBuilder builder) { var tokenSource=..... //extract the tokensource somehow builder.UseCors((p) => p.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod().AllowCredentials()); builder.UseWebSockets(); builder.Map("/userA", app => { app.UseMiddleware<StatusWare>(); }); builder.Map("/userB", app => { tokenSource.cancel(); }); }

--

如果您尝试不使用npm test -- --coverage 而直接调用--coverage,将无法使用

2-对于纱线:

您可以直接传递笑话的--参数

--coverage

答案 3 :(得分:5)

好吧,忽略我之前的回答,因为有人告诉我它没有解决问题。

新答案:

1)检查最新的笑话(v 0.22):https://github.com/facebook/jest

2)facebook团队将伊斯坦布尔作为报道报告的一部分,您可以直接使用它。

3)执行jest后,您可以在控制台上获取覆盖率报告,在jest设置的根文件夹下,您将找到json和html格式的覆盖率报告。

4)仅供参考,如果您从npm安装,可能无法获得最新版本;所以先试试github,确保覆盖范围是你需要的。


旧答案:

也有同样的问题。简短的回答是:IstanbulJest不能一起工作。

查看以下页面以获取更多详细信息:

https://github.com/facebook/jest/issues/101

  

jest使用contextify,它在本机代码的V8上下文中运行JS脚本,从而绕过所有istanbul的require和vm.runInThisContext挂钩。所以istanbul封面不起作用,因为没有使用标准的hookable node.js函数,并且预处理文件也无济于事,因为每个测试都在自己的沙箱中运行,并且没有全局存储覆盖对象。

@Ciro Costa: config.collectCoverage无效,因为它是'TODO'功能。请检查源代码。

答案 4 :(得分:0)

如果--coverage无法正常运行,也可能是由于未启用“ text”或“ text-summary”而启用了coverageReporters。 在文档中:“注意:设置此选项将覆盖默认值。添加“文本”或“文本摘要”以在控制台输出中查看覆盖率摘要。” Source

答案 5 :(得分:0)

配置您的package.json文件

  

“测试”:“开玩笑--coverage”,

enter image description here

现在运行:

yarn test

所有测试将开始运行,您将获得报告。 enter image description here

答案 6 :(得分:0)

如果您使用的是NestJS框架,则可以使用以下命令获得代码覆盖:

npm run test:cov

答案 7 :(得分:0)

这对我有用

 "jest": {
    "collectCoverage": true,
    "coverageReporters": ["json", "html"]
  },
  "scripts": {
    "test": "jest  --coverage"
  },

运行:纱线/ npm测试

答案 8 :(得分:0)

你可以运行 npx jest --coverage -- path/to/your/file.spec.js 这将显示受影响文件的覆盖范围

如果你想在浏览器中查看这个,你可以这样做,

  1. 转到浏览器和 CMD+O。
  2. 导航到您的存储库并搜索coverage/lcov-report/index.html

然后您可以直观地看到所有覆盖区域。 enter image description here

您也可以参考下面这个链接,了解更多信息 https://dev.to/stevescruz/awesome-jest-tip-coverage-report-h5j

答案 9 :(得分:-1)

我遇到了同样的问题,我将其解决如下。

  1. 安装纱线npm install --save-dev yarn
  2. 安装jest-cli npm install --save-dev jest-cli
  3. 将此添加到package.json "jest-coverage": "yarn run jest -- --coverage"
  4. 编写测试后,运行命令npm run jest-coverage。这将在根目录中创建coverage文件夹。 /coverage/icov-report/index.html具有代码覆盖率的html视图。

    快乐的编码!

答案 10 :(得分:-5)

试试Chutzpah。我刚刚用过它。我在博客上写了关于如何在Visual Studio中集成的内容。

这就是我使用Chutzpah进行代码覆盖的方式:http://francorobles.wordpress.com/2014/09/14/code-coverage-with-chutzpah/

相关问题