cre*_*not 8 flutter flutter-test
我不确定如何检查当前是否显示小部件FlutterDriver。
使用WidgetTestereg确实很容易执行findsOneWidget。
但是,在使用进行集成测试期间FlutterDriver,无法访问WidgetTester对象。
该FlutterDriver.waitFor方法不指示是否在给定的持续时间内找到了窗口小部件。
如何使用检查屏幕上是否有小部件FlutterDriver?
Flutter驱动程序没有显式方法来检查小部件是否存在/存在,但是我们可以创建一个自定义方法,该方法将使用waitFor方法达到目的。例如,我text在屏幕上有一个简单的小部件,我将编写一个flutter驱动程序测试,以使用自定义方法检查该小部件是否存在isPresent。
主要代码:
body: Center(
child:
Text('This is Test', key: Key('textKey'))
Run Code Online (Sandbox Code Playgroud)
Flutter驱动程序测试以检查此小部件是否存在,如下所示:
test('check if text widget is present', () async {
final isExists = await isPresent(find.byValueKey('textKey'), driver);
if (isExists) {
print('widget is present');
} else {
print('widget is not present');
}
});
Run Code Online (Sandbox Code Playgroud)
isPresent 是自定义方法,其定义如下:
isPresent(SerializableFinder byValueKey, FlutterDriver driver, {Duration timeout = const Duration(seconds: 1)}) async {
try {
await driver.waitFor(byValueKey,timeout: timeout);
return true;
} catch(exception) {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
运行测试可检测到小部件存在:
如果我注释掉text小部件代码然后运行测试,它将检测到不存在小部件:
希望这可以帮助。