W1517周总结
我这周主要是看testcode, 因此在这把它总结一下:
关于测试程序的编写:
如何创建测试程序可以参考 http://developer.android.com/training/activity-testing/preparing-activity-testing.html
其中在测试文件中可以用setUp()和tearDown()方法测试初始化和清理。
单元测试应继承ActiviUnitTestCase, 继承ActiviUnitTestCase的Activity不会被Android自动启动的。要单独启动Activity,你需要显式的调用startActivity()方法,并传递一个Intent来启动你的目标Activity。
例如:
public class LaunchActivityTest
extends ActivityUnitTestCase<LaunchActivity> {
...
@Override
protected void setUp() throws Exception {
super.setUp();
mLaunchIntent = new Intent(getInstrumentation()
.getTargetContext(), LaunchActivity.class);
startActivity(mLaunchIntent, null, null);
final Button launchNextButton =
(Button) getActivity()
.findViewById(R.id.launch_next_activity_button);
}
}
功能测试 Activity应继承ActivityInstrumentationTestCase2。 与ActivityUnitTestCase不同的是在ActivityInstrumentationTestCase2中可以与Android系统通信以及发送键盘输入和点击事件到UI。 可以注册一个ActivityMoniter来监视单个Activity。ActivityMoniter是由系统在每当一个Activity与你的要求符合是开启的。如果发现匹配,监视器的撞击计数就会更新。通过给ReceiverActivity和ActivityMonitor下断言来判断目标Activity是否开启。,如下:
assertEquals("Monitor for ReceiverActivity has not been called",
1, receiverActivityMonitor.getHits());
assertEquals("Activity is of wrong type",
ReceiverActivity.class, receiverActivity.getClass());
此外,有第三方测试框架Robolectric 和 robotium等。

浙公网安备 33010602011771号