【问题标题】:Output Jest text coverage reporter to .txt将 Jest 文本报道记者输出到 .txt
【发布时间】:2018-03-22 01:51:18
【问题描述】:

Jest 允许您像这样在 package.json 中指定覆盖率报告器

{
    ...

    "jest": {
        "coverageDirectory": "./coverage",
        "coverageReporters": ["json", "text", ...]
    }

    ...
}

但是,这只会将.json 摘要输出到覆盖目录。它仅将文本版本打印到控制台。有没有办法将文本版本也输出到coverage文件夹中的.txt文件?

我一直在参考文档here,它说它与任何Istanbul reporters 兼容。短信伊斯坦布尔记者appears to have support for writing to a file。有没有办法利用它?

【问题讨论】:

  • 不幸的是,我认为textcoverageReporter 只是text-summary 的别名,它只是进入标准输出。您可以根据需要重定向它,但这是一个额外的步骤,并且可能包含其他噪音:jest --coverage > coverage/coverage.txt
  • 是的,不幸的是,它还包含测试结果。我只是想将表中的覆盖结果导出到.txt
  • 我也在尝试做这样的事情,我工作的公司有一个标准的 devops 报告平台,我需要为此导出一些开玩笑的测试覆盖率统计数据

标签: javascript unit-testing jestjs istanbul


【解决方案1】:

在您的笑话配置中添加jsoncoverageReports
"coverageReporters": ["json"]

然后安装伊斯坦布尔:
npm i -D istanbul

将此脚本添加到package.json:

"scripts": {  
  "test": "jest --coverage && istanbul report --include coverage/coverage-final.json text > coverage.txt",  
  ...
}

脚本将生成代码覆盖率报告文件coverage-final.json,然后 istanbul 将生成重定向到coverage.txt的预期输出

【讨论】:

  • 次要更正:npm i -D istanbul(适用于任何复制+粘贴它并想知道为什么 npm 找不到包的人......你知道......像我这样的人)
【解决方案2】:

@KerSplosh 我们最终用shelljs 编写了一个自定义脚本。基本上它会运行测试,并将表写入带有fs 的文件。

const shell = require("shelljs");
const path = require("path");
const fs = require("fs");

const result = shell.exec("yarn test --coverage");
fs.writeFileSync(
    path.resolve(".", "coverage.txt"),
    result.substring(result.indexOf("|\nFile") + 2)
);

if (result.code !== 0) {
    shell.exit(1);
}

但这并不理想。这最好通过 Jest 配置来完成。但在我实现这个的时候,我认为这是不可能的。

【讨论】:

    【解决方案3】:

    如果你碰巧在 jest 之上使用了 react 脚本:

    将这些 sn-ps 添加到它们在 package.json 中的部分:

    "scripts": {
       "cover:report": "react-scripts test --coverage .> coverage/coverage-report.txt",
    }
    ...
    "jest": {
      "collectCoverageFrom": [
         "src/**/*.ts*"
      ],
      "coverageReporters": ["text"]
    }
    

    这会在文件coverage/coverage-report.txt 中生成覆盖率报告。 “.>”部分中的点告诉脚本获取与“.”匹配的所有文件(忽略的文件除外)。模式 - 通常是所有模式。

    根据需要修改“collectCoverageFrom”字符串数组以包含文件/文件夹。

    不幸的是,这个命令不会自行退出,所以当它在完成后挂在那里时,你必须按 Ctrl+C 来结束它。

    在终端中运行它:"yarn cover:report"

    结果包含覆盖结果的明文表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-07
      • 1970-01-01
      • 2021-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多