ActivityUnitTestCase示例
2015-12-15 20:00
429 查看
点击打开链接
ActivityUnitTestCase 通常用来测试单独Activity。在启动被测试的Activity之前,你可以Inject一个假的Context或是Application ,使用这个Mock的Context中一个隔离环境中运行被测试的Activity。通常用于Activity的单元测试,而不和Anroid系统进行交互。
ActivityUnitTestCase 的类继承关系如下图:
应该要注意的是,作为单纯的单元测试,被测试的Activity 不运行在一般应用运行的环境中也不和其它Activity产生交互。在这种情况下,不能调用下面的方法,如果调用一般会抛出异常:
createPendingResult(int, Intent, int)
startActivityIfNeeded(Intent, int)
startActivityFromChild(Activity, Intent, int)
startNextMatchingActivity(Intent)
getCallingActivity()
getCallingPackage()
createPendingResult(int, Intent, int)
getTaskId()
isTaskRoot()
moveTaskToBack(boolean)
下面的方法可以调用,但一般不起任何作用,你可以使用getStartedActivityIntent()和getStartedActivityRequest() 来检查参数值。
startActivity(Intent)
startActivityForResult(Intent, int)
下面的方法也可以调用,一般也无效果,可以使用isFinishCalled() 和getFinishedActivityRequest检查传入的参数。
finish()
finishFromChild(Activity)
finishActivity(int)
ForwardingTest 的代码如下:
[java]
view plaincopyprint?
public class ForwardingTest
extends ActivityUnitTestCase<Forwarding> {
private Intent mStartIntent;
private Button mButton;
public ForwardingTest() {
super(Forwarding.class);
}
@Override
protected void setUp() throws Exception {
super.setUp();
mStartIntent = new Intent(Intent.ACTION_MAIN);
}
@MediumTest
public void testPreconditions() {
startActivity(mStartIntent, null, null);
mButton = (Button) getActivity().findViewById(R.id.go);
assertNotNull(getActivity());
assertNotNull(mButton);
}
@MediumTest
public void testSubLaunch() {
Forwarding activity
= startActivity(mStartIntent, null, null);
mButton = (Button) activity.findViewById(R.id.go);
mButton.performClick();
assertNotNull(getStartedActivityIntent());
assertTrue(isFinishCalled());
}
@MediumTest
public void testLifeCycleCreate() {
Forwarding activity
= startActivity(mStartIntent, null, null);
getInstrumentation().callActivityOnStart(activity);
getInstrumentation().callActivityOnResume(activity);
getInstrumentation().callActivityOnPause(activity);
getInstrumentation().callActivityOnStop(activity);
}
}
在setUp 中,创建了一个Mock Intent 对象mStartIntent 用于测试Activity。
按惯例测试方法testPreconditions 通常作为第一个测试方法,如果该方法Fail的话,表示测试所需的条件不满足,此时其它测试一般也会Fail 。但这个方法并不一定是第一个运行。
testSubLaunch 可以测试当前Activity能否成功启动其它Activity,方法getStartedActivityRequest 返回 当前Activity调用startActivityForResult(Intent, int) 的request code. 方法isFinishCalled 将在当前activity 调用finish()或finishActivity, finishFromChild 后返回true. Forwarding 示例参照Android
ApiDemos示例解析(7):App->Activity->Forwarding
testLifeCycleCreate 测试Activity的生命周期回调函数,使用getInstrumentation取的Instrumentation 对象,通过Instrumentation对象可以调用Activity对应的生命周期回调函数来测试Activity的onCreate, onStart,onResume 等方法。
ActivityUnitTestCase 还提供了sendKeys 方法模拟按键事件,可以用来测试UI。
ActivityUnitTestCase 通常用来测试单独Activity。在启动被测试的Activity之前,你可以Inject一个假的Context或是Application ,使用这个Mock的Context中一个隔离环境中运行被测试的Activity。通常用于Activity的单元测试,而不和Anroid系统进行交互。
ActivityUnitTestCase 的类继承关系如下图:
应该要注意的是,作为单纯的单元测试,被测试的Activity 不运行在一般应用运行的环境中也不和其它Activity产生交互。在这种情况下,不能调用下面的方法,如果调用一般会抛出异常:
createPendingResult(int, Intent, int)
startActivityIfNeeded(Intent, int)
startActivityFromChild(Activity, Intent, int)
startNextMatchingActivity(Intent)
getCallingActivity()
getCallingPackage()
createPendingResult(int, Intent, int)
getTaskId()
isTaskRoot()
moveTaskToBack(boolean)
下面的方法可以调用,但一般不起任何作用,你可以使用getStartedActivityIntent()和getStartedActivityRequest() 来检查参数值。
startActivity(Intent)
startActivityForResult(Intent, int)
下面的方法也可以调用,一般也无效果,可以使用isFinishCalled() 和getFinishedActivityRequest检查传入的参数。
finish()
finishFromChild(Activity)
finishActivity(int)
ForwardingTest 的代码如下:
[java]
view plaincopyprint?
public class ForwardingTest
extends ActivityUnitTestCase<Forwarding> {
private Intent mStartIntent;
private Button mButton;
public ForwardingTest() {
super(Forwarding.class);
}
@Override
protected void setUp() throws Exception {
super.setUp();
mStartIntent = new Intent(Intent.ACTION_MAIN);
}
@MediumTest
public void testPreconditions() {
startActivity(mStartIntent, null, null);
mButton = (Button) getActivity().findViewById(R.id.go);
assertNotNull(getActivity());
assertNotNull(mButton);
}
@MediumTest
public void testSubLaunch() {
Forwarding activity
= startActivity(mStartIntent, null, null);
mButton = (Button) activity.findViewById(R.id.go);
mButton.performClick();
assertNotNull(getStartedActivityIntent());
assertTrue(isFinishCalled());
}
@MediumTest
public void testLifeCycleCreate() {
Forwarding activity
= startActivity(mStartIntent, null, null);
getInstrumentation().callActivityOnStart(activity);
getInstrumentation().callActivityOnResume(activity);
getInstrumentation().callActivityOnPause(activity);
getInstrumentation().callActivityOnStop(activity);
}
}
在setUp 中,创建了一个Mock Intent 对象mStartIntent 用于测试Activity。
按惯例测试方法testPreconditions 通常作为第一个测试方法,如果该方法Fail的话,表示测试所需的条件不满足,此时其它测试一般也会Fail 。但这个方法并不一定是第一个运行。
testSubLaunch 可以测试当前Activity能否成功启动其它Activity,方法getStartedActivityRequest 返回 当前Activity调用startActivityForResult(Intent, int) 的request code. 方法isFinishCalled 将在当前activity 调用finish()或finishActivity, finishFromChild 后返回true. Forwarding 示例参照Android
ApiDemos示例解析(7):App->Activity->Forwarding
testLifeCycleCreate 测试Activity的生命周期回调函数,使用getInstrumentation取的Instrumentation 对象,通过Instrumentation对象可以调用Activity对应的生命周期回调函数来测试Activity的onCreate, onStart,onResume 等方法。
ActivityUnitTestCase 还提供了sendKeys 方法模拟按键事件,可以用来测试UI。
相关文章推荐
- Linux内存寻址
- 插入排序(直接插入排序和希尔(shell)排序
- ViewFlipper简单学习笔记
- hdoj1280前m大的数
- Java设计模式之策略模式
- UCOSIII 任务管理(中)
- 缓存算法(页面置换算法)-FIFO、LFU、LRU
- 第十周项目3 利用二叉树遍历思想解决问题
- 《spring技术内幕》学习(二)ioc容器实现
- cocos2d-x从c++文件生成lua绑定文件及lua脚本文件
- spring-session源码解读-5
- 将汉字转化为拼音
- 求右边区间的最大值
- Spring AOP实现方式
- hdoj1877又一版 A+B
- JAVA设计模式之抽象工厂模式
- java设计模式之建造者模式
- IOS的MVC
- pclint在VS2013中的配置
- Mac OS X下的动态链接库