flutter - 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.
在前面添加,它引发了更多错误。
解决方案
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
关键字以在第一次读取时初始化变量,而不是在创建时初始化。
推荐阅读
- mysql - PHP、MYSQL 统计年产量
- angular - 从其他机器访问本地主机 - Angular
- attachment - 如何将 WebSphere Liberty 设置为一个非常简单的 HTTP 服务来提供目录中的文件
- javascript - 如何从开发工具控制台使用 ES6 模块
- laravel - 带有标记和异步的vue-multiselect,停止工作
- python - Django 在静态文件中使用静态文件 URL
- mysql - MySQL 数据类型 int & varchar2
- python - 在远程机器上运行 python 脚本函数
- python - Pytorch 自定义 nn 模块转发函数中的参数过多
- c# - 如何访问实现的 Queryable.Count 方法?