首页 > 解决方案 > Dart 测试无法访问局部变量

问题描述

我正在尝试编写一些 dart 单元测试,但不知道如何setUp()运行。用 flutter_test.dart 和 test.dart 都试过了。添加断点并调试测试表明setUp()没有运行。

版本:

Flutter 2.3.0-2.0.pre.79 • channel master • https://github.com/flutter/flutter.git
Framework • revision b3f7ebe069 (4 days ago) • 2021-05-08 08:54:02 +0800
Engine • revision f57e986aa8
Tools • Dart 2.14.0 (build 2.14.0-74.0.dev)

dev_dependencies:
  flutter_test:
    sdk: flutter
  test: ^1.16.8

按照测试包的自述文件和Shailen Tuli 的博客,我想出了这个测试

// import 'package:flutter_test/flutter_test.dart';
import 'package:test/test.dart';

void main() {
  int int1;
  int int2;

  setUp(() {
    int1 = 1;
    int2 = 2;
  });

  test(
    'Check int1 and int2',
    () {
      print(int1);
      print(int2);
    },
  );
}

错误输出是The non-nullable local variable 'int1' must be assigned before it can be used. Try giving it an initializer expression, or ensure that it's assigned on every execution path.

不知道为什么它没有运行。尝试this.在前面添加,它引发了更多错误。

标签: flutterunit-testingdart

解决方案


import 'package:test/test.dart';

void main() {
  late int int1;
  late int int2;

  setUp(() {
    int1 = 1;
    int2 = 2;
  });

  test(
    'Check int1 and int2',
    () {
      print(int1);
      print(int2);
    },
  );
}

零安全。RIP。添加late关键字以在第一次读取时初始化变量,而不是在创建时初始化。


推荐阅读