Flutter integration_test - 制作截图
Flutter integration_test - Making screenshot
嘿,当使用 integration_test 库 (https://pub.dev/packages/integration_test) 进行 UI 测试时,是否可以制作屏幕截图?
在flutter_driver中它是建立在服用它的方法中的。在这里我找不到。
我在 GitHub - https://github.com/flutter/flutter/issues/51890
上发现了一个未解决的问题
他们正在开发该功能。
从 Flutter 2.5.0 版本开始,您可以通过非常简单的方式进行屏幕截图。
这是有关如何操作的手册:https://dev.to/mjablecnik/take-screenshot-during-flutter-integration-tests-435k
The flutter integration test example has the skeleton to perform screenshots
首先为集成测试创建驱动程序
//test_driver/foo_test.dart
import 'dart:io';
import 'package:flutter_driver/flutter_driver.dart';
import 'package:integration_test/integration_test_driver_extended.dart';
Future<void> main() async {
final FlutterDriver driver = await FlutterDriver.connect();
await integrationDriver(
driver: driver,
onScreenshot: (String screenshotName, List<int> screenshotBytes) async {
final File image =
await File(screenshotName).create(recursive: true);
image.writeAsBytesSync(screenshotBytes);
return true;
},
);
}
然后在你的测试中
//integration_test/bar_test.dart
void main() {
final binding = IntegrationTestWidgetsFlutterBinding.ensureInitialized()
as IntegrationTestWidgetsFlutterBinding;
testWidgets('screenshot', (WidgetTester tester) async {
await tester.pumpWidget(MyApp());
await tester.pumpAndSettle();
await binding.convertFlutterSurfaceToImage();
await tester.pumpAndSettle();
await binding.takeScreenshot('screenshots/screenshot.png');
}
}
然后
flutter drive --driver=test_driver/foo_test.dart --target integration_test/bar_test.dart
注:
- 截图是png
- 你不能在没有调整的情况下直接从测试中保存(解释驱动程序的必要性)
嘿,当使用 integration_test 库 (https://pub.dev/packages/integration_test) 进行 UI 测试时,是否可以制作屏幕截图?
在flutter_driver中它是建立在服用它的方法中的。在这里我找不到。
我在 GitHub - https://github.com/flutter/flutter/issues/51890
上发现了一个未解决的问题他们正在开发该功能。
从 Flutter 2.5.0 版本开始,您可以通过非常简单的方式进行屏幕截图。 这是有关如何操作的手册:https://dev.to/mjablecnik/take-screenshot-during-flutter-integration-tests-435k
The flutter integration test example has the skeleton to perform screenshots
首先为集成测试创建驱动程序
//test_driver/foo_test.dart
import 'dart:io';
import 'package:flutter_driver/flutter_driver.dart';
import 'package:integration_test/integration_test_driver_extended.dart';
Future<void> main() async {
final FlutterDriver driver = await FlutterDriver.connect();
await integrationDriver(
driver: driver,
onScreenshot: (String screenshotName, List<int> screenshotBytes) async {
final File image =
await File(screenshotName).create(recursive: true);
image.writeAsBytesSync(screenshotBytes);
return true;
},
);
}
然后在你的测试中
//integration_test/bar_test.dart
void main() {
final binding = IntegrationTestWidgetsFlutterBinding.ensureInitialized()
as IntegrationTestWidgetsFlutterBinding;
testWidgets('screenshot', (WidgetTester tester) async {
await tester.pumpWidget(MyApp());
await tester.pumpAndSettle();
await binding.convertFlutterSurfaceToImage();
await tester.pumpAndSettle();
await binding.takeScreenshot('screenshots/screenshot.png');
}
}
然后
flutter drive --driver=test_driver/foo_test.dart --target integration_test/bar_test.dart
注:
- 截图是png
- 你不能在没有调整的情况下直接从测试中保存(解释驱动程序的必要性)