Как проверить статическую константу класса дартс? - PullRequest
0 голосов
/ 18 февраля 2019

enter image description here

Вот мой тестовый код:

 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)

1 Ответ

0 голосов
/ 18 февраля 2019

Средство покрытия регистрирует, к каким инструкциям кода обращался запущенный код.

Думайте об этом как о записи адресов памяти «разделов кода», которые посещает регистр счетчика программ процессора, проходящего через программуfunctions.

Статическая переменная достигается через доступ к памяти данных, никаких инструкций кода не требуется: переменная должна быть в стеке, в куче или в разделе данных, если она является константой.

Рассмотрим этот код:

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% охват:

enter image description here

Если ваш инструмент отчетности показывает красные линии над статическими переменными, его следует считать «ложноположительным»: выжить с ним или изменить инструмент отчетности.

...