我不确定如何使用FlutterDriver
检查当前是否显示窗口小部件。
使用WidgetTester
确实很容易使用例如findsOneWidget
。
但是,在使用public class Q56601920 {
public static void main(String[] args) {
String regex = ".*ROCK=\"[^\\s\"]{5,}\".*";
String[] tests = { "ROCK=\"U3w9kE_ilAuWm3X1gFggmPBnyzE=\"",
"xxxxxxxxROCK=\"U3w9kE_ilAuWm3X1gFggmPBnyzE=\"xxxxxxxx",
"ROCK=\"U3w9kE_ilAuWm3X1gFggmPBnyzE=\",ROLL=\"U3w9kE_ilAuWm3X1gFggmPBnyzE=\"",
"ROCK=\"U3w9kE ilAuWm3X1gFggmPBnyzE=\"",
"ROCK=\"U3w9kE ilAuWm3X1gFggmPBnyzE=",
"ROCK=\"U3w9\""
};
for (String stringToBeTested : tests) {
if (stringToBeTested.matches(regex)) {
System.out.println(stringToBeTested + " matches regexp");
} else {
System.out.println(stringToBeTested + " not matches regexp");
}
}
}
}
进行集成测试期间,无法访问FlutterDriver
对象。
FlutterDriver.waitFor
方法不会指示是否在给定的持续时间内找到了该小部件。
如何使用WidgetTester
检查窗口小部件是否在屏幕上?
答案 0 :(得分:4)
Flutter驱动程序没有显式方法来检查小部件是否存在/存在,但是我们可以创建一个自定义方法,该方法将使用waitFor
方法来达到目的。例如,我在屏幕上有一个简单的text
小部件,我将编写一个flutter驱动程序测试,以使用自定义方法isPresent
检查该小部件是否存在。
主要代码:
body: Center(
child:
Text('This is Test', key: Key('textKey'))
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');
}
});
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;
}
}
运行测试检测到小部件存在:
如果我注释掉text
小部件代码,然后运行测试,它将检测到该小部件不存在:
希望这会有所帮助。