首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何测试dart类静态常量?

如何测试dart类静态常量?
EN

Stack Overflow用户
提问于 2019-02-18 14:32:28
回答 1查看 1K关注 0票数 2

下面是我的测试代码:

代码语言:javascript
复制
 test('should set correct constant', (){
    expect(Stores.CurrentContext, 'currentContext');
  });

但上图显示的静态常量代码并未经过测试。为什么?

版本信息:

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-18 17:35:50

覆盖工具记录正在运行的代码访问了哪些代码指令。

可以把它看作是处理器的程序计数器寄存器单步执行程序函数所访问的“代码段”的存储器地址的记录。

静态变量是通过数据内存访问访问的,不涉及任何代码指令:如果变量是常量,则它应该位于堆栈、堆或数据段中。

考虑下面的代码:

代码语言:javascript
复制
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;
    }

  }

}

然后运行下面的代码:

代码语言:javascript
复制
test('should set correct constant', (){
  Store('currentContext');
  Store('currentContext');
  expect(Stores.CurrentContext, 'currentContext');
});

如果你观察icov的原始输出,你会注意到静态变量的行数永远不会达到,这给了上面描述的模型以意义:

代码语言:javascript
复制
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%的覆盖率:

如果您的报告工具在静态变量上显示红线,则必须将其视为“假阳性”:接受它或更换报告工具。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54741605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档