如何在VSCode中生成和分析Flutter测试覆盖率报告

224 阅读4分钟

如果你正在编写非微不足道的应用程序,添加自动化测试是你能做出的最好的投资之一。

自动测试可以帮助你写出更好的代码及早发现回归,并自信地进行重构。与手动测试相比,它们甚至可以为你节省大量的时间,一次又一次。😱

使用Flutter,可以很容易地生成和可视化整个应用程序或包的测试覆盖率,一直到您项目中的每一行代码。

所以在这篇文章中,我们将学习如何。

准备好了吗?让我们开始吧!

Flutter test --coverage 命令

假设您已经写了一些测试,并想了解您项目中的测试覆盖率。

你所要做的就是运行这三个命令。

# Generate `coverage/lcov.info` file
flutter test --coverage
# Generate HTML report
# Note: on macOS you need to have lcov installed on your system (`brew install lcov`) to use this:
genhtml coverage/lcov.info -o coverage/html
# Open the report
open coverage/html/index.html

生成的HTML报告将创建很多文件。为了避免在git中检查它们,在你的.gitignore 文件中添加coverage/

这将生成报告并在你的浏览器上打开一个页面,看起来像这样。

整个项目的LCOV代码覆盖率报告

从这里,你可以钻进每个目录,单独打开每个文件。例子。

单个文件的LCOV代码覆盖率报告

文件报告的好处是,所有相关的行都用颜色编码(蓝色:覆盖,红色:不覆盖)。

注意,报告告诉你是否有测试覆盖了某一行,而不是这些测试是否通过。换句话说,你仍然要确保所有的测试都通过

虽然这个报告很有帮助,但在开发过程中,在浏览器中阅读它是不现实的。

幸运的是,有两个VSCode扩展可以让生活更轻松。

Flutter覆盖率扩展

一旦您安装了Flutter覆盖率扩展,它将出现在您的测试标签中,并显示所有文件和文件夹的覆盖率信息。

VSCode中的Flutter测试覆盖率面板

根据覆盖率,你还会得到三个不同的图标,显示你的代码中哪些部分需要更多的测试。

  • 覆盖率超过70%
  • ⚠️覆盖率在50%和70%之间
  • ⚠️低于50%的覆盖率

但是如果你想在代码编辑器中看到测试覆盖率呢?

覆盖率集散地扩展

一旦你安装了Coverage Gutters扩展,底部栏会出现一个小的观察按钮。

覆盖率集锦:点击观看

如果你点击它,它将检查测试覆盖率信息(在lcov.info 文件中),你会在编辑器中看到每一行旁边有绿色或红色的沟槽。

代码编辑器中的覆盖率沟槽

这很好,因为它能准确地告诉你,你的代码中哪些部分没有被逐行覆盖!👍

请注意,Flutter覆盖率覆盖率沟槽都使用lcov.info 文件来显示覆盖率数据。所以你应该在做完修改后重新运行flutter test --coverage ,以看到更新的数据。


当一起使用时,Flutter CoverageCoverage Gutters帮助你看到你的代码中哪些部分需要更多的测试。

它们使编写测试更加有趣和有价值,因为将覆盖率提高到100%感觉很好✅

结语

现在我们知道了如何生成测试覆盖率并充分利用可用的VSCode扩展,还有一件事要说。

单纯的代码覆盖率并不是一个银弹

编写测试需要时间(尽管还不如手动测试整个应用程序,一遍又一遍😱),所以我们应该选择一个有意义的测试策略。

单元测试部件测试和集成测试的良好组合可能是最有效的。而且根据项目的情况,包括E2E黄金图像测试也可能是有意义的。