如何在Flutter测试覆盖率中排除文件?

22

我正在尝试从flutter测试结果的覆盖率结果中排除一些config文件。当我运行flutter test --coverage时,输出文件icov.info也包含有关config文件的信息,这会影响总体覆盖率百分比。


你使用的是哪种类型的配置文件? - Muldec
@Muldec,一个Dart文件用于存储所有常量/密码/等等,并且还包括翻译文件,不需要测试覆盖率。基本上,问题是如何跳过一些文件的测试覆盖率。 - Jak
今天不可能实现,抱歉。 - Muldec
2
https://github.com/flutter/flutter/issues/25077 - Jak
你能做到这个吗? - Mary
4个回答

25

如果您正在使用lcov,您可以执行以下操作:

- flutter test --coverage
- lcov --remove coverage/lcov.info 'lib/mock/*' 'lib/utils/l10n/*' 'lib/utils/colors.dart' -o coverage/new_lcov.info
- genhtml coverage/new_lcov.info --output=coverage

1
好的且简单的选项! - E. Sorensen

14

6

有一个方便的包可以做到这一点,名为remove_from_coverage

https://pub.dev/packages/remove_from_coverage

这是使用帮助:

Remove files with paths matching given PATTERNs from the lcov.info FILE
-f, --file=<FILE>         the target lcov.info file to manipulate
-r, --remove=<PATTERN>    a pattern of paths to exclude from coverage
-h, --help                show this help

如果你想在你的流水线中运行此应用程序,或者全局安装该应用程序,请将其添加到dev_dependencies中。


0

我使用https://pub.dev/packages/remove_from_coverage

  1. 安装 dart pub global activate remove_from_coverage
  2. 运行带覆盖率的测试 flutter test --coverage
  3. 过滤您的 lcov 文件。在我的情况下,我使用项目中的 use_cases 文件夹进行过滤。 remove_from_coverage -f coverage/lcov.info -r '^[^\/]+\/[^\/]+(?!.*\/use_cases\/).*$'

此外,如果您喜欢以 HTML 文件形式可视化覆盖率,可以使用 genhtml。 genhtml coverage/lcov.info -o coverage/html


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接