}
Fragment展示与切换
Fragment是Activity的一部分,在Robolectric模拟执行Activity过程中,如果触发了被测试的代码中的Fragment添加逻辑,Fragment会被添加到Activity中。
需要注意Fragment出现的时机,如果目标Activity中的Fragment的添加是执行在onResume阶段,在Activity被Robolectric执行resume()阶段前,该Activity中并不会出现该Fragment。java异步调用框架采用Robolectric主动添加Fragment的方法如下:
<ahref="http://www.jobbole.com/members/madao">@Test</a>
publicvoidaddfragment(Activity activity,intfragmentContent){
FragmentTestUtil.startFragment(activity.getSupportFragmentManager().findFragmentById(fragmentContent));
Fragment fragment=activity.getSupportFragmentManager().findFragmentById(fragmentContent);
assertNotNull(fragment);
}
startFragment()函数的主体便是常用的添加fragment的代码。切换一个Fragment往往由Activity中的代码逻辑完成,需要Activity的引用。
控件的点击以及可视验证
<ahref="http://www.jobbole.com/members/madao">@Test</a>
publicvoidtestButtonClick(intbuttonID){
Button submitButton=(Button)activity.findViewById(buttonID);
assertTrue(submitButton.isEnabled());
submitButton.performClick();
//验证控件的行为
}
对控件的点击验证是调用performClick(),然后断言验证其行为。对于ListView这类涉及到Adapter的控件的点击验证,写法如下:
//listView被展示之后
listView.performItemClick(listView.getAdapter().getView(position,null,null),0,0);
与button等控件稍有不同。
Dialog和Toast测试
测试Dialog和Toast的方法如下:
publicvoidtestDialog(){
Dialog dialog=ShadowDialog.getLatestDialog();
assertNotNull(dialog);
}
publicvoidtestToast(StringtoastContent){
ShadowHandler.idleMainLooper();
assertEquals(toastContent,ShadowToast.getTextOfLatestToast());
}
上述函数均需要在Dialog或Toast产生之后执行,能够测试Dialog和Toast是否弹出。
Shadow写法介绍
Robolectric的本质是在Java运行环境下,采用Shadow的方式对Android中的组件进行模拟测试,从而实现Android单元测试。对于一些Robolectirc暂不支持的组件,可以采用自定义Shadow的方式扩展Robolectric的功能。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-73452-4.html
还好俺是穷光蛋
写的不好怪谁
我TMD也是醉了