dav*_*ode 5 testing unit-testing dart flutter
有没有办法在 Dart/Flutter 的测试中共享通用的 setUp/tearDown 方法和其他辅助方法?通常在其他语言/框架中,比如 Java 或 Python,测试是在可以扩展的类中定义的,但是 Dart 通过在 main 方法中使用函数来进行测试的方式让我感到困惑。例如,我正在测试 io 方法,我的测试中有以下代码:
Directory tempDir;
setUp(() async {
tempDir = await Directory.systemTemp.createTemp();
const MethodChannel('plugins.flutter.io/path_provider').setMockMethodCallHandler((MethodCall methodCall) async {
if (methodCall.method == 'getApplicationDocumentsDirectory') {
return tempDir.path;
}
return null;
});
});
tearDown(() async {
tempDir.delete(recursive: true);
});
Run Code Online (Sandbox Code Playgroud)
如果是任何其他语言,我将创建一个基类或一个名为的 mixin,TempDirTestCase
在其中放置用于创建/删除临时目录的代码,那么每个需要此类功能的套件只需从它继承......但是我应该在 dart/flutter 中做什么来重用代码并避免复制/粘贴?
Tom*_*der 12
创建一个在与测试相同的目录中调用的文件flutter_test_config.dart
(或者在更高级别,它将影响该目录及以下目录中的所有测试)。
在该文件中,您可以在测试文件的方法运行之前调用setUp
和方法:tearDown
main
import 'dart:async';
import 'package:flutter_test/flutter_test.dart';
Future<void> testExecutable(FutureOr<void> Function() testMain) async {
setUp(() {
print('Shared setUp');
});
tearDown(() {
print('Shared tearDown');
});
await testMain();
}
Run Code Online (Sandbox Code Playgroud)
文档:https://api.flutter.dev/flutter/flutter_test/flutter_test-library.html
归档时间: |
|
查看次数: |
973 次 |
最近记录: |