对于动态检测,您可以尝试以下示例 Ant 脚本:
<target name="instru">
<mt:instrument
src="/path/to/MyApp.apk"
dest="/path/to/MyApp-Instrumented.apk"
agent="/path/to/monkeytalk-agent-2.0.2.jar"
androidSdk="/path/to/android-sdk"
androidTarget="android-19"
log="log.txt"
verbose="true" />
</target>
将上述脚本另存为 build.xml ,您可以像这样从命令行运行它:
ant -lib /path/to/monkeytalkpro-ant-2.0.2.beta.jar instru
MonkeyTalk Professional 提供对 Android 应用程序的应用程序控制(请参阅 Pro 应用程序控制)。MonkeyTalk Professional Ant 库包含一个 App 任务,允许您控制被测应用程序。应用程序任务包括安装、卸载、启动、启动、停止和重新启动应用程序的能力。目前,仅支持 Android。
下面是一个练习所有应用程序控制操作的示例 Ant 脚本:
<property name="sdk.dir" value="/path/to/android-sdk" />
<property name="packageName" value="com.example.myapp" />
<property name="activityName" value="RootActivity" />
<target name="install">
<mt:app action="install"
binary="Out.apk"
androidSdk="${sdk.dir}"
verbose="true" />
</target>
<target name="uninstall">
<mt:app action="uninstall"
packageName="${packageName}"
androidSdk="${sdk.dir}"
verbose="true" />
</target>
<target name="launch">
<mt:app action="launch"
packageName="${packageName}"
activityName="${activityName}"
androidSdk="${sdk.dir}"
verbose="true" />
</target>
<target name="restart">
<mt:app action="relaunch"
packageName="${packageName}"
activityName="${activityName}"
androidSdk="${sdk.dir}"
verbose="true" />
</target>
<target name="stop">
<mt:app action="stop"
packageName="${packageName}"
androidSdk="${sdk.dir}"
verbose="true" />
</target>
<target name="isInstalled">
<mt:app action="isInstalled"
packageName="${packageName}"
androidSdk="${sdk.dir}"
verbose="true" />
<echoproperties prefix="monkeytalk" />
</target>
<target name="isRunning">
<mt:app action="isRunning"
packageName="${packageName}"
androidSdk="${sdk.dir}"
verbose="true" />
<echoproperties prefix="monkeytalk" />
</target>
在 CI 中运行 当在 Jenkins 等持续集成 (CI) 服务器上运行测试时,您通常会将上述所有 Ant 任务以及用于测试的常规 MonkeyTalk Run 任务(请参阅 Ant Runner)组合到一个 Ant 脚本中。
这是 CI 中使用的示例 Ant 脚本:
<property name="sdk.dir" value="/path/to/android-sdk" />
<property name="instrumentedApp" value="/path/to/MyApp-Instrumented.apk" />
<property name="packageName" value="com.example.myapp" />
<property name="activityName" value="RootActivity" />
<target name="instru">
<mt:instrument
src="/path/to/MyApp.apk"
dest="${instrumentedApp}"
agent="/path/to/monkeytalk-agent-2.0.2.jar"
androidSdk="${sdk.dir}" />
</target>
<target name="uninstall">
<mt:app action="uninstall"
packageName="${packageName}"
androidSdk="${sdk.dir}"
verbose="true" />
</target>
<target name="install">
<mt:app action="install"
binary="${instrumentedApp}"
androidSdk="${sdk.dir}"
verbose="true" />
</target>
<target name="launch">
<mt:app action="launch"
packageName="${packageName}"
activityName="${activityName}"
androidSdk="${sdk.dir}"
verbose="true" />
</target>
<target name="test">
<mt:run
agent="AndroidEmulator"
adb="${sdk.dir}/platform-tools/adb"
thinktime="1000"
timeout="10000"
suite="${basedir}/mysuite.mts"
reportdir="${basedir}/myreports"
startup="30"
verbose="true" />
</target>
<target name="all">
<antcall target="instru" />
<antcall target="uninstall" />
<antcall target="install" />
<antcall target="launch" />
<antcall target="test" />
<antcall target="uninstall" />
</target>
上述脚本中的 all 目标完成了所有工作。首先是仪器应用程序。然后它会卸载以确保目标设备是干净的。然后它会安装并启动已检测的应用程序。接下来它运行 MonkeyTalk 测试套件。最后,它会再次卸载以自行清理。注意:这仅适用于 Android(因为 Dynamic Instrumentation 和 App Control 目前仅适用于 Android)。
您可以像这样从命令行运行它:
ant -lib /path/to/monkeytalkpro-ant-2.0.2.beta.jar 全部