Dart 如何获取测试文件的覆盖率报告?

Dart 如何获取测试文件的覆盖率报告?,dart,code-coverage,Dart,Code Coverage,我正在尝试获取测试文件的覆盖率报告,但失败了 我使用以下文件创建了一个名为FooBar的新Dart库项目: FooBar/ ├── lib │ ├── FooBar.dart │ └── src │ └── FooBar_base.dart └── test └── FooBar_test.dart 要生成覆盖率报告,我调用dart--退出时暂停隔离--启用vm service=47114 test/FooBar\u test.dart,并在另一个控制台上调用发布全

我正在尝试获取测试文件的覆盖率报告,但失败了

我使用以下文件创建了一个名为FooBar的新Dart库项目:

FooBar/
├── lib
│   ├── FooBar.dart
│   └── src
│       └── FooBar_base.dart
└── test
    └── FooBar_test.dart
要生成覆盖率报告,我调用
dart--退出时暂停隔离--启用vm service=47114 test/FooBar\u test.dart
,并在另一个控制台上调用
发布全局运行覆盖率:collect\u coverage--uri=http://127.0.0.1:47114/ -o coverage.json--恢复隔离

通过这两个命令,我得到了一个巨大的JSON文件

coverage
包也有一个格式化程序。所以我调用
pub global run coverage:format_coverage-I coverage.json
。我得到了一个很好的格式化输出,但输出的文件是错误的。它打印测试文件,但不打印正在测试的文件

$ pub global run coverage:format_coverage -i coverage.json
/Users/ralphbergmann/development/dart/FooBar/test/FooBar_test.dart
       |import 'package:FooBar/FooBar.dart';
       |import 'package:test/test.dart';
       |
      1|void main() {
      2|  group('A group of tests', () {
       |    Awesome awesome;
       |
      2|    setUp(() {
      1|      awesome = new Awesome();
       |    });
       |
      2|    test('First Test', () {
      2|      expect(awesome.isAwesome, isTrue);
       |    });
       |  });
       |}

如何获取有关测试文件的格式化报告?我知道
coverage:format\u coverage
命令有一些选项,但它们并没有解决我的问题。例如,我添加了
--packages=.packages
选项,结果是我得到了所有Dart文件的格式化报告,而不仅仅是我自己的。

默认情况下,
format\u coverage
收集导入Dart源的完整传递关闭的覆盖率。要将报告限制为特定的文件子集,它支持
--report on
选项


--report on
选项根据源的解析绝对路径进行过滤。在您的情况下,传递
--report on=/Users/ralphbergmann/development/dart/FooBar/lib
应该将覆盖率收集限制在该目录中。

您需要第三方工具来格式化输出。我应该注意,在未指定该选项时,我们将其设为默认值似乎是合理的,请随意将其视为错误。