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

时间:2018-06-11 01:46:48

标签: testing code-coverage flutter

我正在使用Android Studio作为我的IDE开发Flutter应用程序 我正在尝试编写测试并检查代码覆盖率,但我无法确定如何在IDE或任何其他应用程序中查看数据。
通过运行flutter test --coverage
覆盖率报告似乎生成到文件/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
....

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

9 个答案:

答案 0 :(得分:10)

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

在Ubuntu中安装

sudo apt-get update -qq -y
sudo apt-get install lcov -y

在Mac中安装

brew install lcov

生成测试文件并转换为HTML

flutter test --coverage
genhtml coverage/icov.info

注意:这样,您可以将其添加到circleci工件和coveralls

答案 1 :(得分:6)

更新5/9/2020:

结果是您只能运行flutter test --coverage,然后在同一终端会话中,运行bash <(curl -s https://codecov.io/bash) -t token令牌应该是您从CodeCov获得的存储库令牌。该命令应自动查找并上传coverage数据,并将在您的CodeCov仪表板上显示。因此,您不需要Bitrise。

原始

我一直在使用Bitrise在我的flutter项目中进行持续集成,并且有一种简单的方法可以将您的报告发送到CodeCov并在那里进行可视化。这要求您获得一些有关如何设置和使用Bitrise的知识,但是它的很多自动特性,因此请不要担心,如果您的团队很小,那么免费套餐应该还不错。这是使CodeCov正常工作的要点。

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

Bitrise coverage variable example

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

Bitrise secret key example

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

Bitrise CodeCov workflow example

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

答案 2 :(得分:5)

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

flutter test --coverage
genhtml coverage/lcov.info -o coverage/html
open coverage/html/index.html

答案 3 :(得分:2)

您可以使用Atom editor查看flutter生成的代码覆盖率 您只需安装Dart和icov-info软件包即可。

然后加载项目文件夹并按Ctrl+Alt+c,将显示覆盖范围,其中包含整个项目范围的摘要以及特定的行突出显示。

到目前为止,Android工作室似乎没有任何插件。

答案 4 :(得分:2)

根据此链接SonarQube plugin for Flutter / Dart,您可以将SonarQube与Flutter的其他插件一起使用。

我已经在Docker上的SonarQube的免费版本上尝试过了,如果配置正确,则只需要在Android Studio终端上运行以下命令即可:

# Download dependencies 
flutter pub get 
# Run tests
flutter test --machine > tests.output
# Compute coverage (--machine and --coverage cannot be run at once...)
flutter test --coverage
# Run the analysis and publish to the SonarQube server
sonar-scanner

以下是报告的示例,您可以深入研究行代码。 Valid XHTML

答案 5 :(得分:1)

现在可以在Android Studio上获取覆盖率报告

enter image description here

答案 6 :(得分:0)

因此,实际答案是否定的,您目前无法在Android Studio(或IntelliJ IDEA)中查看覆盖率报告。

与JavaScript / TypeScript和Java以及可能的Python不同,IntelliJ IDE(以及扩展名为Android Studio)不具有集成的IDE支持,无法在编辑器中显示Flutter代码的测试范围。真可惜,因为能够查看未经测试的代码分支和行在编辑器的源代码中突出显示是一件很漂亮的事情。不确定为什么还没有用于此的插件,因为其他语言都很好地支持该插件,并且会生成标准的lcov.info文件。

IntelliJ中有一个捆绑的代码覆盖率工具窗口,应该允许您以树/表向下钻取格式浏览lcov.info文件,但似乎不适用于由生成的覆盖率报告。颤动(flutter test --coverage)。我以为可能是lcov.info和我的多模块应用程序结构中的相对路径,但是我尝试手动编辑lcov.info中的文件路径,但是我没有运气来显示统计信息。

答案 7 :(得分:0)

我刚刚开发了一个简单的 dart 包 (test_cov_console),因此您可以直接从 Android Studio 终端运行它。该工具将读取由 flutter test --coverage 生成的 lcov.info。找到这个link for source code。 这是输出示例:

    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 |                   |
---------------------------------------------|---------|---------|---------|-------------------|

答案 8 :(得分:0)

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

Test coverage report shown in Android Studio

  1. install the plugin 来自插件选项(Preferences > Plugins > Marketplace 标签 > Search for Flutter增强套件).

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

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

Add new Run Configuration in Android Studio

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

  2. 使用顶部菜单中的覆盖率运行测试。

Launch a Run Configuration in Android Studio.