我有一个简单的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运行。任何见解或建议都会非常受欢迎。感谢。