我正在使用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中查看此信息?
答案 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工作流程中。
2)从CodeCov添加令牌作为密钥,您将需要注册CodeCov并链接存储库以接收令牌。
3)添加CodeCov工作流程并选择CODECOV_TOKEN键。
之后,您应该能够启动构建,如果成功,您应该在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
以下是报告的示例,您可以深入研究行代码。
答案 5 :(得分:1)
答案 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 插件,可生成覆盖率报告。 它显示每个文件的覆盖范围并突出显示覆盖的行(行号旁边的红色/绿色条):
install the plugin 来自插件选项(Preferences > Plugins > Marketplace 标签 > Search for Flutter增强套件).
创建新的运行配置以进行覆盖率测试
(运行 > 编辑配置 > 点击加号按钮以添加新配置>选择Flutter Test在下拉菜单中)
为您的配置命名(例如“所有测试”),设置范围以及包含您的测试的文件或目录。
使用顶部菜单中的覆盖率运行测试。