FlutterDriver
を使用してウィジェットが現在表示されているかどうかを確認する方法がわかりません。
WidgetTester
を使用すると、これは非常に簡単に実行できます。 findsOneWidget
。
ただし、FlutterDriver
を使用した統合テスト中は、WidgetTester
オブジェクトにアクセスできません。
FlutterDriver.waitFor
メソッドは、ウィジェットが指定された期間に見つかったかどうかを示しません。
FlutterDriver
を使用してウィジェットが画面上にあるかどうかを確認するにはどうすればよいですか?
Flutterドライバーには、ウィジェットが存在するかどうかを確認する明示的なメソッドはありませんが、waitFor
メソッドを使用して目的を果たすカスタムメソッドを作成できます。たとえば、画面に単純なtext
ウィジェットがあります。カスタムメソッドisPresent
を使用して、そのウィジェットが存在するかどうかを確認するフラッタードライバーテストを作成します。
メインコード:
body: Center(
child:
Text('This is Test', key: Key('textKey'))
このウィジェットが存在するかどうかを確認するフラッタードライバーテストは次のとおりです。
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
ウィジェットコードをコメントアウトしてからテストを実行すると、ウィジェットが存在しないことが検出されます。
お役に立てれば。