[Android] - 如何写Instrumentation UT Manifest.xml

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/teaspring/article/details/38078405

最近因Android项目需要,开始写一些unit test. 基础原理及一般流程可参照SDK,这里主要想说说UT的配置文件AndroidManifest.xml的一些注意事项。

UT工程的AndroidManifest.xml基本结构当然跟普通app的manifest文件一样。<package>, <application>, <activity>一应俱全,当然<instrumentation>是必须要有的.

<manifest package=...>, 这里的package就是安装完后出现在Settings -> Apps列表中的名字。

<application>/<uses-library android:name=...>这里<uses-library>必填“android.test.runner”

重点是<instrumentation>

1.<name>有多种写法, 不过都是android.test.Instrumentation的派生类, 其派生关系如下:


instrumentaion

这里的InstrumentationTestRunner, LaunchPerformanceBase, MyTestRunner都可以用作<instrumentation>的<name>.

2.<targetPackage>,Instrumentation会在这个包目录中查找相对应的test case 执行.test case包括AndroidTesCase,ActivityInstrumentationTestCase/2及其派生类等. 如果是默认的InstrumentationTestRunner, 则会在这个目录中递归执行所有的case.如果是自定义的TestRunner, 则会执行相应代码。

一个典型的AndroidManifest.xml如下所示:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.android.settings.tests">
    <application>
        <uses-library android:name="android.test.runner" />
        <activity android:name="BluetoothRequestPermissionTest"
            android:label="Bluetooth Perm Test" >
            <intent-filter.../>
        </activity>
        <activity android:name="Operator" android:label="Operator Hook Test" >
            <meta-data android:name="com.android.settings.title" android:resource="@string/operator_settings_title" />
        </activity>
        <activity android:name="Manufacturer" android:label="Manufacturer Hook Test" >
            <intent-filter.../>
            <meta-data android:name="com.android.settings.title" android:resource="@string/manufacturer_settings_title" />
        </activity>
    </application>

    <instrumentation android:name="android.test.InstrumentationTestRunner"
        android:targetPackage="com.android.settings"
        android:label="Settings App Tests">
    </instrumentation>

    <instrumentation android:name="SettingsLaunchPerformance"
        android:targetPackage="com.android.settings"
        android:label="Settings Launch Performance">
    </instrumentation>

    <instrumentation android:name="com.android.settings.SettingsTestRunner"
        android:targetPackage="com.android.settings"
        android:label="WifiPrioritySettigs Test">
    </instrumentation>
</manifest>

adb push [xxx.apk] /data/spp, 安装该UT pkg

执行UT:

adb shell am instrument -w [pkg name]/[instrumentation name]
对于以上的manifest文件,此处的[pkg name]是 com.android.settings.tests. [instrumentation]可以是任意一个 instrumentaion, 比如com.android.settings.SettingsTestRunner。

猜你喜欢

转载自blog.csdn.net/teaspring/article/details/38078405