无法在最新版本的Android SDK中运行UIAutomator测试

时间:2016-01-16 22:59:11

标签: android uiautomator android-uiautomator

我已升级到最新版本的 Android Studio(1.5)和SDK,现在我的 UIAutomator 测试,从ant运行,不再工作了(他们使用了到,直到Android Studio 1.0.x)。

这是我用来运行测试的脚本:

@echo off

cls

set ANDROID_HOME=C:\Users\xxxx\AppData\Local\Android\sdk
set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_65

cmd /c ..\..\..\..\..\..\..\..\thirdparty\ant\bin\ant build

if ERRORLEVEL 1 goto end

:run

cmd /c adb push ..\..\..\..\..\..\..\app\libs\uiautomator.jar /data/local/tmp
cmd /c adb push .\bin\MyTestsUIAutomatorTest.jar /data/local/tmp

cmd /c adb shell uiautomator runtest MyTestsUIAutomatorTest.jar -c xxxxxx.haylugar.uiautomator.src.SettingsActivityUIAutomatorTest
cmd /c adb shell uiautomator runtest HayLugarUIAutomatorTest.jar -c xxxxxx.haylugar.uiautomator.src.ParkingListActivityUIAutomatorTest
cmd /c adb shell uiautomator runtest HayLugarUIAutomatorTest.jar -c xxxxx.haylugar.uiautomator.src.ParkingDetailActivityUIAutomatorTest

使用ant构建时,找不到uiautomator.jar对象:

src\ParkingDetailActivityUIAutomatorTest.java:3: error: package com.android.uiautomator.core does not exist
    [javac] import com.android.uiautomator.core.UiObject;

显然,指令已根据thisthis进行了更改,但是我跟着他们并且他们遗漏了某些内容(我在运行测试时说“没有找到运行的测试”时出错) 。无论如何,我只想以我以前的方式运行我的测试!我不想改变配置并浪费时间来使用Android SDK团队的新知识......

1 个答案:

答案 0 :(得分:0)

固定!

我需要手动编辑build.xml以覆盖SDK提供的uibuild.xml的编译和dex目标,以正确地完成工作,在某处复制所需的库(uiautomator.jar和junit.jar)我的项目结构:

    <property name="jar.libs.dir" value="../../../../../../libs" />
<property name="jar.libs.absolute.dir" location="${jar.libs.dir}" />
<path id="classpath">
    <fileset dir="${jar.libs.absolute.dir}">
        <include name="uiautomator.jar" />
        <include name="junit-4.12.jar" />
    </fileset>
</path>
<!-- version-tag: VERSION_TAG -->
<import file="${sdk.dir}/tools/ant/uibuild.xml" />


<!-- overwrite the compile target in uibuild.xml to include to external 
    jars -->
<target name="compile" depends="-build-setup, -pre-compile">
    <javac encoding="${java.encoding}" source="${java.source}"
        target="${java.target}" debug="true" extdirs="" includeantruntime="false"
        destdir="${out.classes.absolute.dir}" bootclasspathref="project.target.class.path"
        verbose="${verbose}" fork="${need.javac.fork}">
        <src path="${source.absolute.dir}" />
        <classpath refid="classpath" />
        <compilerarg line="${java.compilerargs}" />
    </javac>
</target>

<!-- overwrite the -dex target in uibuild.xml to include external jar files 
    into the target dex file. -->
<target name="-dex" depends="compile, -post-compile">
    <dex executable="${dx}" output="${intermediate.dex.file}"
        nolocals="@{nolocals}" verbose="${verbose}">
        <path path="${out.classes.absolute.dir}" />
    </dex>
</target>

</project>