我正在尝试从flutter
测试结果的覆盖率结果中排除一些config
文件。当我运行flutter test --coverage
时,输出文件icov.info
也包含有关config
文件的信息,这会影响总体覆盖率百分比。
我正在尝试从flutter
测试结果的覆盖率结果中排除一些config
文件。当我运行flutter test --coverage
时,输出文件icov.info
也包含有关config
文件的信息,这会影响总体覆盖率百分比。
如果您正在使用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
最正确的做法是使用预定义的注释,这些注释可以在生成 lcov.info 文件时排除文件。
// coverage:ignore-file
// coverage:ignore-[start/end]
// coverage:ignore-line
有一个方便的包可以做到这一点,名为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
中。
我使用https://pub.dev/packages/remove_from_coverage。
dart pub global activate remove_from_coverage
flutter test --coverage
remove_from_coverage -f coverage/lcov.info -r '^[^\/]+\/[^\/]+(?!.*\/use_cases\/).*$'
此外,如果您喜欢以 HTML 文件形式可视化覆盖率,可以使用 genhtml。 genhtml coverage/lcov.info -o coverage/html