android instrumentation教程,Instrumentation到底是什么?

20170114185716_397.jpg

阅读本文大约需要2.33333分钟

Android instrumentation is a set of control methods or hooks in the Android system.

These hooks control an Android component independently of its normal lifecycle.

They also control how Android loads applications.

Android Instrumentation是Android系统里面的一套控制方法或者”钩子“。这方法,可以用来独立地控制某个组件的生命周期。它们同时可以控制Android如何加载应用程序。

一般来说,Android中组件的生命周期是由系统来控制的。

比如,我们通过Intent启动了一个Activity,那么Activity的生命周期方法会自动被调用。首先,该Activity对象的onCreate()方法就会被调用,紧跟着就是onResume();当用户启动另外一个应用时,则该Activity的onPause()方法被调用;如果该Activity的代码调用了finish()方法,那么onDestroy()方法也随即被调用。

Android APIs并没有提供入口让我们直接去调用这些生命周期方法,但是如果通过Instrumentation就可以轻松做到这一点。

再者,操作系统将一个应用的所有控件都运行在同一个进程里。我们可以允许一些控件运行在不同的进程中,比如Content Providers;但是我们无法将一个应用和另外一个已经在运行的应用运行在同一个进程中。

使用了Instrumentation,我们就可以在测试代码中调用这些生命周期的回调函数。这将允许我们就像在调试该控件一样,一步一步地把该控件的整个生命周期运行一遍。以下代码片段将会演示如何使用Instrumentation来控制一个Activity保存和恢复其状态的测试:

// Start the main activity of the application under test

mActivity = getActivity();

// Get a handle to the Activity object's main UI widget, a Spinner

mSpinner = (Spinner)mActivity.findViewById(com.android.example.spinner.R.id.Spinner01);

// Set the Spinner to a known position

mActivity.setSpinnerPosition(TEST_STATE_DESTROY_POSITION);

// Stop the activity - The onDestroy() method should save the state of the Spinner

mActivity.finish();

// Re-start the Activity - the onResume() method should restore the state of the Spinner

mActivity = getActivity();

// Get the Spinner's current position

int currentPosition = mActivity.getSpinnerPosition();

// Assert that the current position is the same as the starting position

assertEquals(TEST_STATE_DESTROY_POSITION, currentPosition);

这里用到的关键方法是Instrumentation API里面的getActivity(),该被测的Activity在我们没有调用此方法的时候是不会启动的。我们也可以先把测试需要的环境配置好,然后再调用此方法来启动该Activity。

同时,Instrumentation可以将要测试的APP以及其对应的test Package加载到同一个进程中。由于我们所要测试的组件和其测试用例都运行在同一进程,因此我们就可以在我们的测试用例中直接调用组件的方法,对组件做一系列访问和修改。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值