旅游景点网站建设规划书,wordpress在线演示,梵克雅宝五花手链,甘肃省建设厅官方网站造价总站原文地址#xff1a;http://android.xsoftlab.net/training/activity-testing/activity-unit-testing.html
Activity单元测试除了可以快速的验证Activity的状态之外#xff0c;还可以验证Activity与底层组件之间的交互。单元测试通常用于测试较小的代码单元(它们通常不依赖系…原文地址http://android.xsoftlab.net/training/activity-testing/activity-unit-testing.html
Activity单元测试除了可以快速的验证Activity的状态之外还可以验证Activity与底层组件之间的交互。单元测试通常用于测试较小的代码单元(它们通常不依赖系统或者网络资源)它们可能是一个方法一个类或者其它组件。例如开发者可以通过单元测试来检查Activity是否含有正确的布局或者是否触发了正确的Intent。
不过单元测试通常不适用于测试与系统有交互的UI组件该类测试情况应当使用ActivityInstrumentationTestCase2。
这节课将会学习如何使用单元测试来验证用于启动Activity的Intent。因为测试运行于独立的环境之中所以Intent并不会实际发送到Android系统但是你可以检测该Intent所携带的数据是否正确。
创建用于Activity单元测试的测试用例
类ActivityUnitTestCase对单个的Activity测试提供了支持。要进行Activity的单元测试需继承ActivityUnitTestCase。
在ActivityUnitTestCase中的Activity并不会由Android系统自动启动。如果要在这里启动Activity必须在这里显式的调用startActivity()方法并传入要执行的Intent。
例如
public class LaunchActivityTestextends ActivityUnitTestCaseLaunchActivity {...Overrideprotected 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的启动
单元测试可能含有以下目的
验证在Button按下后LaunchActivity是否启动了Intent.验证被启动的Intent所包含的数据是否正确.
为了验证在Button按下后是否有Intent被触发开发者可以使用getStartedActivityIntent()方法获得被触发的Intent。然后通过断言方法来验证该方法返回的Intent是否为null以及该Intent所含的数据是否正确。如果两个断言方法都正确那么可以断定成功了触发了该Intent。
开发者所实现的代码可能如下
MediumTest
public void testNextActivityWasLaunchedWithIntent() {startActivity(mLaunchIntent, null, null);final Button launchNextButton (Button) getActivity().findViewById(R.id.launch_next_activity_button);launchNextButton.performClick();final Intent launchIntent getStartedActivityIntent();assertNotNull(Intent was null, launchIntent);assertTrue(isFinishCalled());final String payload launchIntent.getStringExtra(NextActivity.EXTRAS_PAYLOAD_KEY);assertEquals(Payload is empty, LaunchActivity.STRING_PAYLOAD, payload);
}
因为LaunchActivity是独立运行的所以不能够使用库TouchUtils来直接控制UI。为了可以模拟Button的点击时间可以直接调用performClick()方法。