ViewPager的Robolectric测试不在Pagerdapter中调用instantiateItem

时间:2014-04-04 12:45:13

标签: android unit-testing android-viewpager robolectric android-pageradapter

我有一个简单的PageAdapter实现可以在应用程序中运行,但我无法为包含它的Fragment创建单元测试。调用适配器中的getCount()方法,我的模拟数据返回要显示的1项的计数,但此后,instantiateItem永远不会被调用,因此我不能给布局充气并填充视图。以下是两种适配器方法。

@Override
public int getCount() {
    return v.getB().size();  // returns 1 with my test data
}

@Override
public Object instantiateItem(ViewGroup container, int position) {
    View layout = layoutInflater.inflate(R.layout.page, container, false);
    ButterKnife.inject(this, layout);
    B b = v.getB().get(position);
    configureLayoutForB(layout, b);
    container.addView(layout, position);
    return redemptionlayout;
}

这是我的单元测试代码

@Before
public void setup() {
    bArrayList = new ArrayList<B>(2);
    b0 = mock(B.class);
    b1 = mock(B.class);
}

@Test
public void shouldShowPlainCode() {
    final String testCode = "test code";
    when(b0.getCode()).thenReturn(testCode);
    bArrayList.add(b0);
    final V v = mock(V.class);
    when(v.getB()).thenReturn(bArrayList);

    fragment = SVFragment.newInstance(voucher);
    startFragment(fragment, TestSVActivity.class);

    TextView codeView = (TextView) findViewById(R.id.code);
    assertThat(codeView).containsText(testCode);
}

整个测试套件使用Robolectric运行。任何见解或建议都会非常受欢迎。感谢。

0 个答案:

没有答案