如何解决Dart / Flutter的代码覆盖率可视化特别是Windows和VS Code
1。上下文
我一直在开发一个包含数百个测试的程序包,因此可视化代码覆盖率的简便方法将非常方便。
我想用一个.vscode
配置和一个lcov.info
输出来运行测试,该输出将被VS Code自动识别,并在相应的编辑器上以红色或绿色突出显示。 / p>
2。我已经尝试过的东西
过去几天(实际上是几个月),我尝试了许多不同的解决方案,但是没有一个解决上述问题的理想方案:
-
flutter test --coverage --coverage-path=lcov.info
确实可以生成必需的文件,但是必须通过genhtml
之类的第三方程序对其进行可视化,如果在Windows上则更是如此。- 最后它确实需要Flutter,如果您使用的是纯Dart,则不必要。
- IntelliJ应该可以理想地工作,但是即使安装了
test_coverage
软件包之后,我似乎也无法启用我的带覆盖率运行按钮。- 尽管Gitter上的一个人告诉我他已经在IntelliJ上工作了。
-
coverage
和test_coverage
软件包都提供了与我上面描述的内容相似的东西,但是它们的解决方案比较笨拙—在Windows上,它们很难设置... - codecov.io是第三方的替代方案,但是当编辑器提供更加灵活和快速的体验时,不得不从外部处理此问题很烦人。
- 还有覆盖范围不明确的问题,对于codecov.io尚不清楚。例如,如果一个文件夹测试了间接调用另一个文件夹的内容,那是否也算作间接调用文件夹的覆盖范围?几乎总是不可取的。
3。其他资源
解决方法
-
您可以使用
genhtml.perl
脚本 here。 -
如果您的机器上安装了 Windows 版 Git,那么您已经安装了 Perl,它应该在这里:
<git-install-dir>\usr\bin\perl.exe
将
\\
文件中所有文件路径行(以/
为前缀)中的反斜杠字符 (SF:
) 替换为斜杠字符 (lcov.info
)。-
运行
genhtml.perl
脚本。例如——假设当前工作目录是你项目的根目录——:<git-install-dir>\usr\bin\perl.exe \ C:\Scripts\genhtml.perl \ -o .\coverage\html .\coverage\lcov.info
注意。添加
--prefix
选项也可能很有用。
执行这些操作后,您应该会在 .\coverage\html/
目录中获得生成的 HTML 报告。在浏览器中打开 .\coverage\html\index.html
文件以查看报告。
我希望这会有所帮助 - 至少,它对我有用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。