
下面是我的测试代码:
test('should set correct constant', (){
expect(Stores.CurrentContext, 'currentContext');
});但上图显示的静态常量代码并未经过测试。为什么?
版本信息:
Flutter 1.2.2-pre.3 • channel master • https://github.com/flutter/flutter.git
Framework • revision 67cf21577f (4 days ago) • 2019-02-14 23:17:16 -0800
Engine • revision 3757390fa4
Tools • Dart 2.1.2 (build 2.1.2-dev.0.0 0a7dcf17eb)发布于 2019-02-18 17:35:50
覆盖工具记录正在运行的代码访问了哪些代码指令。
可以把它看作是处理器的程序计数器寄存器单步执行程序函数所访问的“代码段”的存储器地址的记录。
静态变量是通过数据内存访问访问的,不涉及任何代码指令:如果变量是常量,则它应该位于堆栈、堆或数据段中。
考虑下面的代码:
import 'package:rxdart/rxdart.dart';
class Stores {
static const String Login = 'login';
static const String CurrentContext = 'currentContext';
}
class Store {
final name;
static var eMap = Map();
Store._internal(this.name); // DA:13
factory Store(String name) { // DA:15
if (eMap.containsKey(name)) { // DA:16
return eMap[name]; // DA:17
} else {
final store = Store._internal(name); // DA:19
eMap[name] = store; // DA:20
return store;
}
}
}然后运行下面的代码:
test('should set correct constant', (){
Store('currentContext');
Store('currentContext');
expect(Stores.CurrentContext, 'currentContext');
});如果你观察icov的原始输出,你会注意到静态变量的行数永远不会达到,这给了上面描述的模型以意义:
SF:lib/stores.dart
DA:13,1
DA:15,1
DA:16,2
DA:17,2
DA:19,1
DA:20,2
LF:6
LH:6可视化报告工具显示100%的覆盖率:

如果您的报告工具在静态变量上显示红线,则必须将其视为“假阳性”:接受它或更换报告工具。
https://stackoverflow.com/questions/54741605
复制相似问题