Android在JUnit的之外給我們又提供了Instrumentation測試架構。通過Instrumentation可以類比按鍵按下、抬起、螢幕點擊、滾動等事件,有效地控制Activity進行自動化測試。
Instrumentation是執行application instrumentation代碼的基類。當應用程式啟動並執行時候instrumentation處於開啟,Instrumentation將在任何應用程式運行前初始化,可以通過它監測系統與應用程式之間的互動。
1. Manifest.xml中描述:
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:label="Tests for My App"
android:targetPackage="com.my.test" />
<span style="font-size:18px;"><uses-permission android:name="android.permission.INJECT_EVENTS" /></span>
2.類比發送按鍵:
/**
* 傳入需要的索引值即可
* @param keyCode
*/
private void sendKeyCode(final int keyCode){
new Thread () {
public void run() {
try {
Instrumentation inst = new Instrumentation();
inst.sendKeyDownUpSync(keyCode);
} catch (Exception e) {
Log.e("Exception when sendPointerSync", e.toString());
}
}
}.start();
}
}
3.類比滑鼠事件:
new Thread () {
public void run () {
try {
Instrumentation inst=new Instrumentation();
inst.sendPointerSync(MotionEvent.obtain(SystemClock.uptimeMillis(),
SystemClock.uptimeMillis(),
MotionEvent.ACTION_DOWN, 240, 400, 0));
inst.sendPointerSync(MotionEvent.obtain(SystemClock.uptimeMillis(),
SystemClock.uptimeMillis(),
MotionEvent.ACTION_UP, 240, 400, 0));
} catch(Exception e) {
Log.e("Exception when sendPointerSync", e.toString());
}
}
}.start();