最近因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。
本文介绍了在Android项目中编写单元测试(UT)时,如何配置AndroidManifest.xml文件的注意事项。主要内容包括<instrumentation>标签的使用,特别是<name>和<targetPackage>属性的设置。文中提到<uses-library>必须包含"android.test.runner",并提供了示例展示了一个标准的AndroidManifest.xml结构。通过自定义TestRunner,可以控制执行特定的测试用例。

2003

被折叠的 条评论
为什么被折叠?



