Pep*_*tal 7 android android-fragments android-testing android-espresso
我在我的Android(4.0+)应用程序片段(在Activity中)使用Tab栏.
我想创建Espresso测试但是如果我创建主要Activity并打开片段.我得到这个例外:
java.lang.IllegalStateException: ViewPager does not have adapter instance.
at com.astuetz.PagerSlidingTabStrip.setViewPager(PagerSlidingTabStrip.java:177)
at cz.villamemories.detoxme.staticcontent.StaticContentFragment.onCreateView(StaticContentFragment.java:197)
Run Code Online (Sandbox Code Playgroud)
片段中的代码:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mViewPagerAdapter = new StaticContentPagerAdapter(
this.getChildFragmentManager(), mItemsList, categories);
mPager.setAdapter(mViewPagerAdapter);
mTabs.setViewPager(mPager); //line 197
Run Code Online (Sandbox Code Playgroud)
你有什么提示可能有问题吗?怎么了?
小智 0
我还面临着 ViewPager infragment 的问题。我出现这个问题是因为我的 viewpager 有多个根元素。
@RunWith(JUnit4.class)
public class FragmentTest {
private static final String TAG = "FragmentTest";
@Rule
public ActivityTestRule<MainActivity> mActivity = new ActivityTestRule<MainActivity>(MainActivity.class);
@Test
public void checkTabSwiping() {
onView(nthChildOf(withId(R.id.main_content), 5)).check(matches(withId(R.id.homecontentgrouppager)));
}
public static Matcher<View> firstChildOf(final Matcher<View> parentMatcher) {
return new TypeSafeMatcher<View>() {
@Override
public void describeTo(Description description) {
description.appendText("with first child view of type parentMatcher");
}
@Override
public boolean matchesSafely(View view) {
if (!(view.getParent() instanceof ViewGroup)) {
return parentMatcher.matches(view.getParent());
}
ViewGroup group = (ViewGroup) view.getParent();
return parentMatcher.matches(view.getParent()) && group.getChildAt(0).equals(view);
}
};
}
public static Matcher<View> nthChildOf(final Matcher<View> parentMatcher,
final int childPosition){
return new TypeSafeMatcher<View>() {
@Override
public void describeTo(Description description) {
description.appendText("with " + childPosition + " child view of type parentMatcher");
}
@Override
public boolean matchesSafely(View view) {
if (!(view.getParent() instanceof ViewGroup)) {
return parentMatcher.matches(view.getParent());
}
ViewGroup group = (ViewGroup) view.getParent();
return parentMatcher.matches(view.getParent()) && view.equals(group.getChildAt(childPosition));
}
};
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的 homefragment.xml 文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:animateLayoutChanges="true"
android:background="@color/black"
android:orientation="vertical">
<android.support.v4.view.ViewPager
android:id="@+id/promotionalviewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"></android.support.v4.view.ViewPager>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="@dimen/size_5"
android:gravity="center_horizontal">
<LinearLayout
android:id="@+id/viewPagerCountDots"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:gravity="center_horizontal"
android:orientation="horizontal" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
我希望它可以帮助您在 Expresso Framework 中创建测试用例。
| 归档时间: |
|
| 查看次数: |
1371 次 |
| 最近记录: |