如何显示Flutter测试的代码覆盖率数据?

peo*_*mes 16 testing code-coverage flutter

我正在使用Android Studio作为我的IDE开发Flutter应用程序.
我正在尝试编写测试并检查代码覆盖率,但我无法弄清楚如何在IDE或任何其他应用程序中查看数据.
通过运行flutter test --coverage
A覆盖率报告似乎生成一个文件/coverage/Icov.info
该文件看起来像这样:

SF:lib\data\Customer.g.dart
DA:9,2
DA:10,2
DA:11,2
DA:12,2
DA:13,2
DA:20,0
DA:21,0
DA:22,0
DA:23,0
DA:24,0
....
Run Code Online (Sandbox Code Playgroud)

查看该文件,它似乎有一个包含逐行覆盖数据的项目文件列表.有没有办法在Android Studio中查看此信息?

Jak*_*Jak 22

您还可以安装文件lcov并将其转换icov.infoHTML页面,然后在浏览器中使用排序选项查看结果

在Ubuntu中安装

sudo apt-get update -qq -y
sudo apt-get install lcov -y
Run Code Online (Sandbox Code Playgroud)

在Mac中安装

brew install lcov
Run Code Online (Sandbox Code Playgroud)

生成测试文件并转换为HTML

flutter test --coverage
genhtml coverage/icov.info -o coverage/html
Run Code Online (Sandbox Code Playgroud)

注意:这样你可以把它添加到circleci文物和coveralls以及

  • Windows 用户的解决方案是什么? (8认同)
  • 这应该是公认的答案,因为它与编辑无关。 (3认同)
  • 尽管这对我来说效果很好,但将输出目录传递到genhtml命令中可能是一个好主意:genhtml coverage / icov.info -o coverage / output / (2认同)
  • 对我来说,文件名是“coverage/lcov.info”,而不是生成部分中的“icov.info” (2认同)

peo*_*mes 10

您可以使用Atom 编辑器查看 flutter 生成的代码覆盖率。
你只需要安装 Dart 和 lcov-info 包。

然后你加载你的项目文件夹并按Ctrl+Alt+c,coverage 将显示整个项目coverage 的摘要,并突出显示特定的行。

到目前为止,似乎还没有任何适用于 Android Studio 的插件可以做到这一点。


I M*_*ita 10

我刚刚开发了一个简单的 dart 包(test_cov_console),因此您可以直接从 Android Studio 终端运行它。该工具将读取由 flutter test --coverage 生成的 lcov.info。找到此链接获取源代码

您可以全局安装该库,因此它不会更改您当前的项目:

    flutter pub global activate test_cov_console
Run Code Online (Sandbox Code Playgroud)

并运行它:

    flutter pub global run test_cov_console
Run Code Online (Sandbox Code Playgroud)

这是输出示例:

    flutter pub run test_cov_console
---------------------------------------------|---------|---------|---------|-------------------|
File                                         |% Branch | % Funcs | % Lines | Uncovered Line #s |
---------------------------------------------|---------|---------|---------|-------------------|
lib/src/                                     |         |         |         |                   |
 print_cov.dart                              |  100.00 |  100.00 |   88.37 |...,149,205,206,207|
 print_cov_constants.dart                    |    0.00 |    0.00 |    0.00 |    no unit testing|
lib/                                         |         |         |         |                   |
 test_cov_console.dart                       |    0.00 |    0.00 |    0.00 |    no unit testing|
---------------------------------------------|---------|---------|---------|-------------------|
 All files with unit testing                 |  100.00 |  100.00 |   88.37 |                   |
---------------------------------------------|---------|---------|---------|-------------------|
Run Code Online (Sandbox Code Playgroud)

输出可以保存到 CSV 文件:

flutter pub run test_cov_console -c --output=coverage/test_coverage.csv
Run Code Online (Sandbox Code Playgroud)

示例 CSV 输出文件:

File,% Branch,% Funcs,% Lines,Uncovered Line #s
lib/,,,,
test_cov_console.dart,0.00,0.00,0.00,no unit testing
lib/src/,,,,
parser.dart,100.00,100.00,97.22,"97"
parser_constants.dart,100.00,100.00,100.00,""
print_cov.dart,100.00,100.00,82.91,"29,49,51,52,171,174,177,180,183,184,185,186,187,188,279,324,325,387,388,389,390,391,392,393,394,395,398"
print_cov_constants.dart,0.00,0.00,0.00,no unit testing
All files with unit testing,100.00,100.00,86.07,""
Run Code Online (Sandbox Code Playgroud)


Kim*_*Kim 10

Flutter 增强套件正是这样做的。它是一个 Android Studio/IntelliJ 插件,可生成覆盖率报告。它显示每个文件的覆盖范围,并突出显示覆盖的行(行号旁边的红色/绿色条):

Android Studio 中显示的测试覆盖率报告

  1. 从插件选项(首选项>插件>市场选项卡 > 搜索Flutter 增强套件)安装插件

  2. 创建新的运行配置以进行覆盖率测试

运行>编辑配置> 单击加号按钮添加新配置 >在下拉列表中选择Flutter Test )

在 Android Studio 中添加新的运行配置

  1. 命名您的配置(例如“所有测试”),设置范围以及包含测试的文件或目录。

  2. 使用顶部菜单的覆盖范围来运行测试。

在 Android Studio 中启动运行配置。


Aus*_*lor 9

2020 年 5 月 9 日更新:

原来你可以直接运行flutter test --coverage,然后在同一个终端会话中运行bash <(curl -s https://codecov.io/bash) -t token令牌应该是你从CodeCov获得的存储库令牌。该命令应自动查找并上传覆盖率数据,并将在您的 CodeCov 仪表板上可见。所以你不需要Bitrise。

原来的:

我一直在使用Bitrise对我的 flutter 项目进行持续集成,有一种简单的方法可以将您的报告发送到CodeCov,然后在那里进行可视化。这需要您获得一些关于如何设置和使用 Bitrise 的知识,但它的很多知识都是自动的,所以不用担心,如果您是一个小团队,您应该可以使用免费套餐。以下是让 CodeCov 工作的关键点。

1) 确保将 --coverage 变量添加到 Flutter Test 工作流程中。

Bitrise覆盖变量示例

2) 添加来自 CodeCov 的令牌作为密钥,您需要注册 CodeCov 并链接您的存储库以接收令牌。

Bitrise 密钥示例

3) 添加 CodeCov 工作流并选择 CODECOV_TOKEN 键。

Bitrise CodeCov 工作流程示例

之后,您应该能够启动构建,如果成功,您应该在 CodeCov 上看到您的仪表板更新。


mmc*_*abe 6

Android Studio 现已提供覆盖率报告

在此输入图像描述

  • 我用不到,奇怪。 (8认同)

Aus*_*lor 6

随着 Flutter 2.5 的发布,您现在可以在 IntelliJ 和 Android Studio 中查看测试覆盖率。
\n看这篇文章

\n
\n

此外,最新的 Flutter IJ/AS 插件允许您查看单元测试和集成测试运行的覆盖率信息。您\n可以从 \xe2\x80\x9cDebug\xe2\x80\x9d 按钮旁边的工具栏按钮访问此按钮:

\n
\n

Android Studio 和 IntelliJ:\n在此输入图像描述

\n


Ada*_*aka 5

这是您要运行以在 macOS 上的浏览​​器中查看测试覆盖率的内容

flutter test --coverage
genhtml coverage/lcov.info -o coverage/html
open coverage/html/index.html
Run Code Online (Sandbox Code Playgroud)