web-dev-qa-db-ja.com

FlutterDriverを使用してウィジェットが表示されているかどうかを確認する方法

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;
  }
}

テストを実行すると、ウィジェットが存在することが検出されます。

enter image description here

textウィジェットコードをコメントアウトしてからテストを実行すると、ウィジェットが存在しないことが検出されます。

enter image description here

お役に立てれば。

6
Darshan