2017-03-31 12 views
1

私はエスプレッソでAndroidアプリをテストしています。私はandroidInputType=dateEditTextウィジェットを持っています。このコントロールを指で触ると、カレンダーがポップアップして日付を選択できます。Androidでカレンダーから日付を選択するエスプレッソ

エスプレッソでこれを自動化するにはどうすればよいですか?私はその場所のいたるところを見てきました。私はそれを理解できません。 typeText()はうまくいきません。

+0

あなたはIDとそのデータ型を表示することができます。あなたがクリックする必要のあるカレンダーID。 –

+0

私の答えは他の人にも役立つようです。あなたの問題を解決すれば、それを正しい答えとして受け入れることができればいいでしょうか? – stamanuel

答えて

7
オリジナルは、ここに私が答えた

が、別の質問の範囲内:Recording an Espresso test with a DatePicker - ので、私はそこから私の適応の答えを再投稿:日付ピッカーで日付を設定する

使用このライン:

onView(withClassName(Matchers.equalTo(DatePicker.class.getName()))).perform(PickerActions.setDate(year, monthOfYear, dayOfMonth)); 

これは、espresso-contribのエスプレッソサポートライブラリの一部であるPickerActionsを使用します。そして、あなたが開いたビューをクリックするヘルパーメソッドを作成することができ

androidTestCompile('com.android.support.test.espresso:espresso-contrib:2.2.2') { 
    exclude group: 'com.android.support', module: 'appcompat' 
    exclude module: 'support-annotations' 
    exclude module: 'support-v4' 
    exclude module: 'support-v13' 
    exclude module: 'recyclerview-v7' 
    exclude module: 'appcompat-v7' 
} 

:、それを使用するあなたのGradleファイル(あなたはサポートライブラリのバージョン不一致によるエラーをコンパイル防ぐために、いくつかの除外を必要とする)には、このようにそれを追加するには日付ピッカーは、日付を設定し、[OK]ボタンをクリックして確認されます。その後、

public static void setDate(int datePickerLaunchViewId, int year, int monthOfYear, int dayOfMonth) { 
    onView(withParent(withId(buttonContainer)), withId(datePickerLaunchViewId)).perform(click()); 
    onView(withClassName(Matchers.equalTo(DatePicker.class.getName()))).perform(PickerActions.setDate(year, monthOfYear, dayOfMonth)); 
    onView(withId(android.R.id.button1)).perform(click()); 
} 

そして、あなたのテストでこのようにそれを使用します。

TestHelper.setDate(R.id.date_button, 2017, 1, 1); 
//TestHelper is my helper class that contains the helper method above 
+0

ビルドの競合を避けるために、「2.2.2」を「2.2」に置き換えなければなりませんでした。 – Hack06

関連する問題