集成测试

integration_test

集成测试框架,可分析测试用例的性能指标

官方文档:https://flutter.cn/docs/cookbook/testing/integration/introduction

基本使用

1. 添加配置

1
2
3
4
5
6
7
8
9
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^1.0.0
mockito:
integration_test:
sdk: flutter
flutter_driver:
sdk: flutter

2. 根目录下新建test_driver文件夹,编写integration_test.dart文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import 'dart:io';
import 'package:integration_test/integration_test_driver_extended.dart';

Future<void> main() => integrationDriver(
onScreenshot: (String screenshotPath, List<int> screenshotBytes) async {

final File image = File(screenshotPath);
final dir = image.parent;
print(image);

if(!await dir.exists()) await dir.create(recursive: true);
image.writeAsBytesSync(screenshotBytes);

return true;

}
);
Read More

单元测试

单元测试的作用?

  • 保证代码质量,当一个方法在某个版本进行了调整,如果对应的单元测试无法通过,说明这个方法的改动有问题。单元测试中也能包含很多边界条件,甚至可以把测试用例的场景都包含,这样就相当于做了一遍测试的工作,而且可以复用检查,下次迭代时再运行一遍,说不定能发现新问题
  • 单元测试阶段发现bug的处理时间相对后期测试发现反馈给研发,处理的时间要短很多,提高效率
Read More

Mockito

描述

用于模拟数据的Flutter测试库。为了使用模拟类,需要在pubspec.yaml中添加build_runner依赖。

基本用法

1. pubspec.yaml添加依赖

1
2
3
4
5
dev_dependencies:
flutter_test:
sdk: flutter
mockito:
build_runner:

2. mock类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import 'package:mockito/annotations.dart';
import 'package:mockito/mockito.dart';

// 标注创建cat.mocks.dart文件和MockCat类
@GenerateNiceMocks([MockSpec<Cat>()])
import 'cat.mocks.dart';

// 真实的类
class Cat {
String sound() => "Meow";
bool eatFood(String food, {bool? hungry}) => true;
Future<void> chew() async => print("Chewing...");
int walk(List<String> places) => 7;
void sleep() {}
void hunt(String place, String prey) {}
int lives = 9;
}

void main() {
// 创建mock对象
object.var cat = MockCat();
}
Read More