同じエラーメッセージが表示されるの「アダプタデータを読み込む」エラーが発生しましたが、これらの投稿からの回答はどれも私のために働いていませんでした。
Testing RecyclerView if it has data with Espresso
Espresso onData Error performing 'load adapter data' on view
Espresso. Error performing 'load adapter data'
私は、Android StudioでEspresso UI test recorderを使用して終了。 にアクセスし、トップドロップダウンメニューからを実行し、Record Espresso Testをクリックします。それはあなたが実行するデバイスを選択するように要求され、アプリケーションが起動されたら、実行するUIテストを手動で行い、必要に応じてアサーションを追加します。完了した場合は、OKを打つ。それはあなたのためのUIテストファイルを生成します。
用に生成されたコードは、RecyclerViewの項目をクリックすると次のようになります。ここでの重労働はMatcherメソッドですchildAtPosition()
テストの開始時に、10秒間スリープしてすべてがロードされていることを確認します。通常は10秒かかることはありませんが、おそらく2秒に短縮できます。代わりに、@piotrek1543のようなEspresso IdlingResource
を使用することが推奨されていますが、それはテストに対応するために生産コードに介入(試験固有のコードを混ぜる)を加える必要があります。
@LargeTest
@RunWith(AndroidJUnit4.class)
public class MainActivityTest {
@Rule
public ActivityTestRule<MainActivity> mActivityTestRule = new ActivityTestRule<>(MainActivity.class);
@Test
public void mainActivityTest() {
// Added a sleep statement to match the app's execution delay.
// The recommended way to handle such scenarios is to use Espresso idling resources:
// https://google.github.io/android-testing-support-library/docs/espresso/idling-resource/index.html
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
ViewInteraction recyclerView = onView(
allOf(withId(R.id.recycler_view_list),
childAtPosition(
withClassName(is("android.support.constraint.ConstraintLayout")),
0)));
recyclerView.perform(actionOnItemAtPosition(0, click()));
}
private static Matcher<View> childAtPosition(
final Matcher<View> parentMatcher, final int position) {
return new TypeSafeMatcher<View>() {
@Override
public void describeTo(Description description) {
description.appendText("Child at position " + position + " in parent ");
parentMatcher.describeTo(description);
}
@Override
public boolean matchesSafely(View view) {
ViewParent parent = view.getParent();
return parent instanceof ViewGroup && parentMatcher.matches(parent)
&& view.equals(((ViewGroup) parent).getChildAt(position));
}
};
}
}
注:エスプレッソUIテストレコーダーによって生成されたコードは、どちらか完璧ではない、それはほとんどの時間のために働くではなく、100%