我有一个由MapFragment组成的类。我可以使用
测试MapFragment是否为nullstartFragment(mapFragment);
assertThat(mapFragment.getView()).isNotNull();
assertThat(mapFragment.getActivity()).isNotNull();
assertThat(mapFragment.getView().findViewById(R.id.mapFragment)).isNotNull();
当我使用时:
startVisibleFragment(mapFragment);
发生错误:
java.lang.NullPointerException:未初始化CameraUpdateFactory
以下是完整代码:
目标是,如果用户点击当前位置按钮,我会测试默认位置和缩放是否正确。
@RunWith(RobolectricGradleTestRunner.class)
@Config(constants = ConsumerBuildConfig.class, sdk = 21)
public class MainActivityUnitTesting {
private MainActivity mMainActivity;
private ImageButton currentLocBtn;
@Before
public void setUp() throws Exception {
mMainActivity = Robolectric.buildActivity(MainActivity.class).create().get();
currentLocBtn = (ImageButton) mMainActivity.findViewById(R.id.currentLocBtn);
}
@Test
public void test_MainActivityTestDefaultLocation(){
startFragment(mMainActivity.mMapFragment);
currentLocBtn.performClick();
assertEquals(mMainActivity.mMapFragment.getDefaultLocation(), new LatLng(39.833333, -98.583333));
assertEquals(mMainActivity.mMapFragment.getmDefaultZoom(), 16);
}
}
答案 0 :(得分:0)
尝试使用类CameraUpdateFactory
初始化MapsInitializer
。将此代码放在setUp()
方法中:
MapsInitializer.initialize(context);
修改强>
请查看本指南其他影子包部分。您可以使用影子包org.robolectric:shadows-maps
。这是库javadoc的链接
http://robolectric.org/javadoc/3.0/org/robolectric/shadows/maps/package-frame.html