Flutter代码覆盖率插件dlcov的使用
Flutter代码覆盖率插件dlcov的使用
插件简介
DLCOV 是一个命令行工具,用于验证代码覆盖率阈值(适用于CI/CD、git hooks等)。它具有以下主要特性:
- 可以在shell脚本、GitHub Actions、git hooks等中使用,如果代码覆盖率低于您设置的最小阈值,则阻止应用程序构建。
- 包含Flutter默认不包含的文件,提高代码覆盖率阈值的准确性。
- 通过文件名后缀、文件名中的正则表达式或文件内的内容过滤不需要的文件。
- 记录测试日志到文件中,能够观察每次验证时代码覆盖率的增减。
- 允许外部工具生成
lcov.info
文件,无需直接依赖Flutter SDK或其他技术。
使用示例
dlcov --coverage=80 --include-untested-files=true --lcov-gen="flutter test --coverage" --log=true
该命令的作用如下:
--coverage=80
:检查代码覆盖率是否等于或大于80.0%。--include-untested-files=true
:生成未测试文件的引用(默认为false)。--lcov-gen="flutter test --coverage"
:通过flutter test --coverage
命令生成lcov.info
文件。--log=true
:将每次测试覆盖率信息记录到dlcov.log
文件中,最多记录1000行。
安装方法
可以通过以下两种方式安装dlcov:
全局安装
pub global activate dlcov
然后可以直接运行:
dlcov -c 80
或者使用完整路径:
pub global run dlcov -c 80
作为开发依赖添加到项目中
编辑项目的pubspec.yaml
文件,在dev_dependencies
部分添加:
dev_dependencies:
dlcov: ^4.2.0
之后可以使用以下命令来检查代码覆盖率:
pub run dlcov -c 80
参数说明
长参数 | 短参数 | 是否必须 | 默认值 | 示例 | 描述 |
---|---|---|---|---|---|
--coverage |
-c |
否 | 0 | 80.0 | 最小覆盖率阈值 |
--log |
-l |
否 | false | true | 将每次测试覆盖率信息记录到dlcov.log 文件中,最多记录1000行 |
--include-untested-files |
否 | false | true | 获取更真实的报告,不忽略未测试文件 | |
--lcov-gen |
否 | “flutter test --coverage” | 生成lcov.info 文件的命令 |
||
--exclude-suffix |
-e |
否 | .g.dart,.freezed.dart | .g.dart | 根据文件名后缀排除文件 |
--exclude-files |
否 | “widget.dart,part*” | 排除路径名包含特定字符串的文件 | ||
--exclude-contents |
否 | “classextends StatefulWidget” | 排除包含特定模式的文件 | ||
--exclude-contents-path |
否 | “./patterns_list.txt” | 指定包含所有排除模式的文件路径 |
GitHub Actions集成示例
下面是一个简单的GitHub Actions工作流配置文件.github/workflows/ci.yml
示例,当代码覆盖率低于80%时会终止构建流程:
name: CI
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Dart SDK
uses: dart-lang/setup-dart@v1
with:
dart-version: 'stable'
- name: Install dependencies
run: flutter pub get
- name: Run tests and check coverage
run: |
pub global activate dlcov
dlcov --coverage=80 --include-untested-files=true --lcov-gen="flutter test --coverage"
以上就是关于Flutter代码覆盖率插件dlcov的基本介绍和使用方法。希望这些信息对您有所帮助!如果您有任何问题或需要进一步的帮助,请随时提问。
更多关于Flutter代码覆盖率插件dlcov的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter代码覆盖率插件dlcov的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用dlcov
插件来获取代码覆盖率的详细步骤和代码示例。dlcov
是一个与Dart VM Service Protocol结合使用的工具,用于收集和分析Dart代码覆盖率数据。需要注意的是,dlcov
并不是Flutter官方直接支持的插件,但可以通过集成Dart VM Service Protocol来实现类似功能。因此,这里我们将介绍如何手动配置和使用Dart VM Service Protocol结合一些工具来收集覆盖率数据。
步骤 1: 设置Flutter项目
首先,确保你的Flutter项目已经设置好并且可以正常运行测试。
步骤 2: 添加依赖
虽然dlcov
不是直接的Flutter插件,但我们可以使用Dart的test_coverage
包来收集覆盖率数据。首先,在pubspec.yaml
文件中添加test_coverage
依赖:
dev_dependencies:
test: ^1.16.0 # 确保使用支持覆盖率的test包版本
test_coverage: ^0.5.0 # 添加test_coverage依赖
然后运行flutter pub get
来安装依赖。
步骤 3: 配置测试脚本
接下来,我们需要配置一个脚本来运行测试并收集覆盖率数据。在pubspec.yaml
文件中,添加一个自定义的脚本命令:
scripts:
collect_coverage: "dart --enable-vm-service:5055 run test/all_tests.dart && wait-for-dart-vm-service:5055 && gen_coverage --report-on lib --subpackages --in=coverage/json --out=coverage/report --report-type=html"
注意:上面的命令使用了wait-for-dart-vm-service
和gen_coverage
这两个工具,它们需要单独安装。你可以通过Dart的包管理工具pub
全局安装它们:
dart pub global activate wait_for_dart_vm_service
dart pub global activate coverage
确保你的PATH环境变量包含了Dart的bin目录,这样你就可以全局使用这些工具了。
步骤 4: 编写测试
确保你的测试文件位于test/
目录下,并且测试代码能够正常运行。例如,一个简单的测试可能如下所示:
// test/example_test.dart
import 'package:test/test.dart';
void main() {
test('adds one to input values', () {
expect(1 + 1, equals(2));
});
}
步骤 5: 运行覆盖率收集脚本
现在,你可以运行之前配置的脚本来收集覆盖率数据:
flutter pub run collect_coverage
这个命令会启动Dart VM服务,运行测试,等待服务启动,然后生成覆盖率报告。生成的HTML报告将位于coverage/report
目录下,你可以在浏览器中打开它查看详细的覆盖率信息。
注意
- 上述方法使用了
wait_for_dart_vm_service
和coverage
工具,这些工具并不是Flutter官方工具,但它们在Dart社区中广泛使用。 - 确保Dart和Flutter环境配置正确,以便这些工具能够正常工作。
- 覆盖率报告可能会因为测试运行的方式(如异步代码、隔离环境等)而有所不同,确保你的测试覆盖了所有需要分析的代码路径。
通过上述步骤,你应该能够在Flutter项目中收集并分析代码覆盖率数据。虽然这里没有直接使用dlcov
,但提供的方法达到了类似的效果,并且更加符合Dart和Flutter社区的当前实践。