2017-04-19 1 views
1

私は新しいアンドロイドテストキット(エスプレッソ)でいくつかのテストを書こうとしています。しかし、ビューが表示されているかどうかを確認したり、ボタンをクリックしたりするなど、いくつかのアクションを実行する方法に関する情報は見つかりません。ビューが存在するかどうかを確認する必要があることに注意してください。ビューでアクションを実行する場合は、次のビューに進みます。エスプレッソ - 画面が表示されているかどうかをチェック

ご協力いただければ幸いです。私は基本的のリンク、またはいくつかのサンプルコードが必要です。ビューは YESの場合に存在する場合は、次の画面に進み、そうでない場合、アクション を実行し、

チェックを

答えて

1

あなたは古典的なオプションを使用することができます「してみてください/キャッチ ":

try { 
    onView(withText("Text")).check(matches(isDisplayed())); 
    //perform some actions on this view 
} catch (NoMatchingViewException notExist) { 
    //proceed to the next screen 
} 
1

テストの動作を制御する必要があります。したがって、いくつかの前提条件を追加するか、ビューを表示するかどうかに応じてパラメータを追加するなど、動作を制御する@Ruleを作成する必要があります。

2
Object currentActivity; 

@Nullable 
private Activity getCurrentActivity() throws Throwable { 
    getInstrumentation().waitForIdleSync(); 
    getInstrumentation().runOnMainSync(new Runnable() { 
     public void run() { 
      Collection resumedActivities = ActivityLifecycleMonitorRegistry.getInstance().getActivitiesInStage(RESUMED); 
      if (resumedActivities.iterator().hasNext()) { 
       currentActivity = resumedActivities.iterator().next(); 
      } 
     } 
    }); 

    return (Activity) currentActivity; 
} 

これで、現在表示されているアクティビティを取得できます。その後、このような何かをすることによって、あなたは安全なコードセクションを作ることができ

HOMESCREEN: 
     { 
      for (; ;) { 
       if (getCurrentActivity() != null) { 
        //check if it is the required screen 
        if (getCurrentActivity().getLocalClassName().toLowerCase().contains("homescreen")) { 
         //if it is the required screen, break the 
         //loop and continue execution 
         break HOMESCREEN; 
        } else { 
         //wait for 2 seconds and run the loop again 
         sleep(2000); 
        } 
       } else { 
        break HOMESCREEN; 
       } 
      } 
     } 

睡眠(2000)だけで、以下に示すようのThread.sleep呼び出すカスタム関数は次のとおりです。

private void sleep(long milliseconds) { 
    try { 
     Thread.sleep(millis); 
    } catch (InterruptedException e) { 
     throw new RuntimeException("Cannot execute Thread.sleep()"); 
    } 
} 
関連する問題