Robolectric单元测试笔记
作者:liucloo 发布时间:[ 2016/5/30 11:15:37 ] 推荐标签:软件测试技术 单元测试
上面的buildActivity和setupActivity都可以创建Activity,他们的不同之处在于,setupActivity直接到Activity生命周期的运行阶段,而buildActivity只是获取对象
public static <T extends Activity> ActivityController<T> buildActivity(Class<T> activityClass) {
return ActivityController.of(shadowsAdapter, activityClass);
}
public static <T extends Activity> T setupActivity(Class<T> activityClass) {
return ActivityController.of(shadowsAdapter, activityClass).setup().get();
}
public ActivityController<T> setup() {
return create().start().postCreate(null).resume().visible();
}
(2)、生命周期
ActivityController提供对Activity生命周期操作的一系列方法:(相同的,Service也是这样)
(3)、测试点击
Robolectric支持点击操作,首先确保Activity执行到相应的生命周期。在MainActivity编写好逻辑。
MainActivity
button = (Button) findViewById(R.id.test1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("Success");
}
});
TestDemoTest
@Before
public void beforeTest() throws Exception {
Log.i(TAG, "beforeTest()");
mainActivity = Robolectric.buildActivity(MainActivity.class).setup().get();//注意生命周期
button = (Button) mainActivity.findViewById(R.id.test1);
}
@Test
public void btn1(){
button.performClick();
}
在Robolectric中打Log请使用**System.out**。Android的Log工具只有在使用Adb时候才有效。
(4)、断言
Robolectric不提供类似Junit的assert方法来测试程序。所以还是需要使用Junit的assert来测试。
assertNotNull(); //判断对象是否不为空
assertNull();
assertEquals(); //判断实际值和期望值是否“相同”
assertTrue(); //判断布尔值是否为true
assertFalse();
assertNotSame();
assertSame(); //判断实际值和期望值是否为同一个对象
(5)、在项目中使用
实际项目中,单元测试对象与页面是一对一的,并不建议跨页面,这样的单元测试藕合度太大,维护困难。单元测试需要找到页面的入口,分析项目页面中的元素、业务逻辑,这里的逻辑不仅仅包括界面元素的展示以及控件组件的行为,还包括代码的处理逻辑。然后可以创建单元测试case列表(列表用于纪录项目中单元测试的范围,便于单元测试的管理以及新人了解业务流程),列表中记录单元测试对象的页面,对象中的case逻辑以及名称等。工程师可以根据这个列表开始写单元测试代码。
单元测试是工程师代码级别的质量保证工程,上述流程并不能完全覆盖重要的业务逻辑以及边界条件,因此,需要写完后,看覆盖率,找出单元测试中没有覆盖到的函数分支条件等,然后继续补充单元测试case列表,并在单元测试工程代码中补上case。
直到规划的页面中所有逻辑的重要分支、边界条件都被覆盖,该项目的单元测试结束。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11