提问人:mrodriguezoi 提问时间:11/16/2023 更新时间:11/16/2023 访问量:28
为什么当我从类的方法调用它时,我的 FlutterDriver 为 null?
Why is my FlutterDriver null when i call it from a classes' method?
问:
我开始学习使用 flutter 进行自动化测试,因为我想使用flutter_driver在失败的期望上截取屏幕截图,我创建了一个类,该类尝试测试并通过截屏并重新抛出失败来捕获 TestFailure。
我正在使用默认的 flutter 应用程序(带有计数器和增加它的按钮的应用程序)。
import 'package:flutter_driver/flutter_driver.dart';
import 'package:test/test.dart';
import 'dart:io';
class CustomTest {
Function testDetails;
String testName;
FlutterDriver? driverr;
CustomTest(this.testDetails, this.testName, this.driverr);
void runTest() {
test(testName, () async {
try {
await testDetails();
} on TestFailure catch (_) {
await takeScreenshot();
rethrow;
}
});
}
Future<File> takeScreenshot() async {
final List<int> pixels = await driverr!.screenshot();
final File file = File('test_driver/results/${testName}_failure.png');
await file.writeAsBytes(pixels);
return file;
}
}
void main() {
group('Counter App', () {
FlutterDriver? driver;
setUpAll(() async {
driver = await FlutterDriver.connect();
});
tearDownAll(() async {
driver?.close();
});
final counterTextFinder = find.byValueKey('counter');
final buttonFinder = find.byValueKey('increment');
CustomTest test1 = CustomTest(() async {
expect(await driver?.getText(counterTextFinder), "1");
}, "Starts at 0", driver);
test1.runTest();
CustomTest test2 = CustomTest(() async {
await driver?.tap(buttonFinder);
expect(await driver?.getText(counterTextFinder), "2");
}, "Increments the counter", driver);
test2.runTest();
});
}
但是,当我运行测试(我修改为无法测试屏幕截图)时,我收到一个 null 异常,因为驱动程序为 null。
我尝试从 takeScreenshot() 方法中提取代码并将其放在测试描述本身上,在那里它运行没有问题。
答: 暂无答案
评论