【问题标题】:Node.js Istanbul/Mocha Unit Tests not printing detailsNode.js 伊斯坦布尔/摩卡单元测试不打印详细信息
【发布时间】:2016-08-08 14:52:43
【问题描述】:

我正在尝试在 Node.js 中使用 Istanbul 和 Mocha 来运行单元测试并生成代码覆盖率报告。我正在使用以下代码运行单元测试并生成这些代码报告。

istanbul cover _mocha -- -R tap 'test/*.test.js' > test.tap; istanbul report clover

如果我只想运行没有代码覆盖率报告的单元测试,我可以运行以下命令。

mocha

这两种方法都可以正常工作。 但是第一种方法并没有真正将任何内容打印到控制台。我不知道它当前正在运行哪个单元测试,当它全部完成时,我不知道到底出了什么问题。它不提供任何形式的错误日志或任何东西。第二种方法会在每次测试后打印特定单元测试的状态,以便在控制台中轻松查看您当前正在处理的单元测试,并且在所有测试完成后,它会为您提供有关失败原因的详细信息和错误日志,以便您可以开始调试了。第一种方法不提供任何这些。

是否可以使用伊斯坦布尔生成代码覆盖率报告,但让它将所有详细信息打印到刚刚运行mocha 打印的控制台?如果是这样,我该如何实现?我的一些测试需要一点时间才能运行和完成,因此在使用伊斯坦布尔生成代码覆盖率报告时,很高兴能准确查看当前正在进行的测试以及有关实时测试的更多详细信息。

【问题讨论】:

    标签: javascript node.js unit-testing mocha.js istanbul


    【解决方案1】:

    您的istanbul 命令将输出重定向到test.tap,因此您不会在控制台上看到它:

    istanbul cover _mocha -- -R tap 'test/*.test.js' > test.tap; istanbul report clover
                                                     ^^^^^^^^^^
    

    Istanbul 不需要test.tap 中的测试输出,因此您可以删除重定向。如果您希望命令继续写入文件,可以使用tee 命令将测试输出写入文件和控制台。

    【讨论】:

    • 太棒了!非常感谢。将代码更改为istanbul cover _mocha -- -R tap 'test/*.test.js' | tee test.tap; istanbul report clover 似乎可行。可悲的是,它似乎仍然没有像运行 mocha 那样提供详细信息。希望它以mocha 的格式输出到控制台。那好吧。再次感谢。
    • 您不必使用tap 记者。只需省略-R tap 部分,您应该得到与mocha 命令几乎相同的输出。
    • 我正在使用一些我不完全理解的奇怪的 Jenkins 插件。我很确定他们需要 Tap 文件。
    【解决方案2】:

    试试这个:https://github.com/glenjamin/mocha-multi

    mocha-multi 不断改变 process.stdout 的值和 每当记者在做它的事情时 process.stderr。

    运行这个: istanbul cover _mocha -- --recursive --reporter mocha-multi --reporter-options list=-,tap=test.tap 'test/*.test.js' && istanbul report clover

    【讨论】:

      猜你喜欢
      • 2016-11-16
      • 1970-01-01
      • 1970-01-01
      • 2016-02-10
      • 1970-01-01
      • 2016-04-05
      • 2014-02-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多