既然前面介绍了Android的测试工具Robolectric,那今天就介绍一些比较常用的方法。
最常用的就是获取activity的方法,Robolectric提供了很多获取activity的方式,具体要采用哪一种,看具体的测试情况,这边介绍三种方式:
第一种:
MainActivity activity = Robolectric.setupActivity(MainActivity.class);
直接获取activity,不过最新版本的Robolectric中,这个方法好像已经过时了,被第二种取代了。使用方式略有不同,不过都比较简单。
第二种:
ActivityScenario scenario = ActivityScenario.launch(MainActivity.class); scenario.onActivity(activity -> { // 在这里就可以使用SDK的接口了 EditText editText = activity.findViewById(R.id.edit_text); })
这种方式要使用activity,需要通过onActivity()方法,将具体的测试脚本直接传进去,可能刚开始会有点不习惯,不过可以去复习一遍lambda表达式,理解起来就会容易很多。
第三种:
ActivityController<MainActivity> activityController = Robolectric.buildActivity(MainActivity.class);MainActivity mainActivity = activityController.get();
这种方式获取的是一个ActivityController对象,要获取对应的activity的话,可以直接使用get()方法。
通过上面任意一种方式,都能获取到activity。软件测试工程师经常被调侃为点点点、点工,下面我们介绍最重要的方法,元素点击操作:
RadioButton womanButton = mainActivity.findViewById(R.id.sex_woman);womanButton.performClick();
任何找到的控件,都可以通过performClick()方法进行点击操作。
有时候我们需要获取activity或者fragment的生命状态,可以用这个方法:
mainActivity.getLifecygetCurrentStatecle().()
然后就是常见的Toast工具的提示,只要是进行了提示,都可以通过这个方法获取到提示的时长和内容:
Button button = mainActivity.findViewById(R.id.button_edit);button.performClick();String toastText = ShadowToast.getTextOfLatestToast();int duration = ShadowToast.getLatestToast().getDuration();
后面是AlertDialog的获取:
AlertDialog latestAlertDialog = ShadowAlertDialog.getLatestAlertDialog();
不过这个latestAlertDialog由于我的版本问题,无法获取到对应的文本内容,你们如果有正确的使用姿势,可以发文档连接或者直接发代码给我看看。
先介绍到这吧,以后用到其他了再补充。