【问题标题】:Measure code coverage of an executed shell script with kcov/shunit2使用 kcov/shunit2 测量执行的 shell 脚本的代码覆盖率
【发布时间】:2014-12-18 21:02:11
【问题描述】:

是否可以测量执行的 shell 脚本而不是源代码的代码覆盖率?

我有一个带有几个开关和选项的 shell 脚本。我添加了一些测试,我想测量测试套件的覆盖率。

来源:

The script.

And its tests.

如您所见,tests.sh 执行 shell 脚本,而不是在同一个 shell 中调用其函数。这样我就无法得到kcov 来测量脚本的覆盖率。我只能测量文件tests.sh 的覆盖率。

是否有可能以某种方式强制kcov 测量主脚本的覆盖率?

这个命令是我能做到的最好的:

/usr/local/bin/kcov --debug=31 coverage/ test/tests.sh

在结果中我只看到了关于shunit2tests.sh 的覆盖率报告,但在调试输出中我也看到了对misspell_fixer.sh 的引用。所以我怀疑它是否可行。

【问题讨论】:

  • 请查看覆盖范围的 LCOV.SH 完整 BASH 实现...无需额外的解释器,如您的机器中的 RUBY 或 BINARY 可执行文件。只需使用 BASH github.com/javanile/lcov.sh 检查 BASH 的覆盖范围

标签: bash shell unit-testing testing kcov


【解决方案1】:

请向 kcov 问题跟踪器提交错误报告,

https://github.com/SimonKagstrom/kcov

据我所知,它应该支持这一点。 (我是Kcov的作者)。

【讨论】:

  • 谢谢。我刚刚创建:github.com/SimonKagstrom/kcov/issues/45 我注意到set +x 可以停止收集数据。我也应该为此开张票吗?
  • kcov 使用 bash 跟踪来收集它的数据,因此这个特定问题可能很难解决。不过我可以自己提交一个关于它的错误,因为其他人有时也可能遇到它。
猜你喜欢
  • 1970-01-01
  • 2010-12-12
  • 2021-04-25
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 2019-07-10
  • 2011-02-26
相关资源
最近更新 更多