Я пытаюсь проверить GridView, чтобы гарантировать загрузку изображений с помощью Robolectric. GridView.getChildAt(0)
возвращает null, даже если в адаптере есть данные. Я понимаю, что это потому, что getChildAt()
возвращается в зависимости от того, что показано на экране.GridView.getChildAt возвращает null при тестировании с помощью Robolectric
Есть ли способ получить этот тест, работающий в Robolectric, или мне нужно перейти на тестирование на устройстве (например, с эспрессо)?
@RunWith(RobolectricTestRunner.class)
@Config(manifest = "../../src/main/AndroidManifest.xml", emulateSdk = 18, reportSdk = 18)
public class ImageGridFragmentTest {
private ImageGridFragment mImageGridFragment;
@Before
public void setup() {
ShadowLog.stream = System.out;
mImageGridFragment = new ImageGridFragment();
startFragment(mImageGridFragment);
}
@Test
public void testImageGridFragmentLoaded() throws Exception {
assertNotNull(mImageGridFragment);
}
@Test
public void shouldLoadImageToGrid() throws Exception {
GridView gridView = (GridView) mImageGridFragment.getView().findViewById(R.id.gv_image_grid);
Log.d("gridView.size", Integer.toString(gridView.getCount()));
assertEquals(0, gridView.getFirstVisiblePosition());
View itemView = (View) gridView.getChildAt(0);
assertNotNull(itemView); // Test fails here
ImageView imageView = (ImageView) itemView.findViewById(R.id.iv_loaded_image);
ShadowDrawable shadowDrawable = Robolectric.shadowOf(imageView.getDrawable());
assertEquals(R.drawable.sample_image, shadowDrawable.getCreatedFromResId());
}
}
Что такое gridView.size или является адаптером null? Вероятно, 'assertNotNull (gridView.getAdapter());' – petey
GridView.size, возвращаемый Log.d, равен 2. Я добавляю два элемента в адаптер. Адаптер не кажется нулевым (см. Мой ответ). – TTransmit