在我的项目中,第一个屏幕是登录屏幕,而不是带有recylerview的片段,点击recylerview项目,片段获取替换,下一个片段出现包含recyler视图。如何使用roboelectric编写单元测试的测试用例。我是第一次使用机器人。请帮助我。
以下是我的loginScreen测试用例类
的代码@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class,packageName = "com.project.app")
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class LoginScreenActivityTest {
LoginScreenActivity activity;
@Test
public void a_loginPriceguide() throws Exception {
activity = Robolectric.setupActivity(LoginScreenActivity.class);
assertEquals("abc@gmail.com",activity.getUsername(0));
assertEquals("abc123$",activity.getPassword(0));
CheckBox remember_me = (CheckBox) activity.findViewById(R.id.remember_me);
remember_me.performClick();
Button btn = (Button)activity.findViewById(R.id.btn_login);
btn.performClick();
}
@Test
public void b_loginDialog() throws Exception{
activity = Robolectric.setupActivity(LoginScreenActivity.class);
try {
Thread.sleep(10000);
Intent i = new Intent(activity,MainActivity.class);
activity.startActivity(i);
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
}
这是我为登录屏幕测试用例所做的,这个类工作正常。
但是使用recylerView的片段会出现空指针异常
片段测试用例代码
@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class,packageName = "com.project.app")
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class ProductTest {
private Product fragment ;
private LinearLayoutManager mockLayoutManager;
ActivityController<FragmentActivity> activityController;
@Before
public void setUp() {
mockLayoutManager = Mockito.mock(LinearLayoutManager.class);
fragment = new Product();
}
@Test
public void l_clickProduct() throws Exception {
activityController = Robolectric.buildActivity(FragmentActivity.class);
activityController.create().start();
RecyclerView recyclerView = (RecyclerView) fragment.getView().findViewById(R.id.list);
RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
assertThat(layoutManager).isEqualTo(mockLayoutManager);
}