5

最近我尝试开始使用 android uiautomation 测试。

开发人员网站上的教程我已经完成了几次,在遇到一些问题并解决它们之后,我遇到了一个更大的问题。

我创建了一个项目,导入了两个 jar 文件并构建了一个 java 测试用例场景(教程中的那个)。之后,我使用 shell 命令行创建了一个 uitest projekt。更新了 build.xml 创建了一个 jar 文件并将其推送到我的设备上。

就这一点而言,一切都很好。

但是尝试使用命令行运行我的测试:

adb -s <ANDROID_SERIAL> shell uiautomator runtest DeviceUnlocker.jar -c c.d.d.DeviceUnlocker

我只得到错误:

INSTRUMENTATION_RESULT:shortMsg = java.lang.RuntimeException
INSTRUMENTATION_RESULT:longMsg=在路径上找不到类“cddDeviceUnlockingPseudoCodeTest:/system/framework/android.test.runner.jar:/system/framework/uiautomator.jar::/data/local /tmp/DeviceUnlocker.jar

INSTRUMENTATION_CODE:0

4

6 回答 6

1

好吧,最简单的方法是只在 eclipse 中创建一个新的 android junit projekt。

我认为这或多或少等于 uiautomator。我想你可能有同样的机会......如果我错了,请纠正我......

uiautomator 仍然没有运行......我还在android本身的uibuild.xml中发现了一些错误

<target name="test" description="Runs tests"> <!-- todo: fix this --> <fail message="Launching tests from Ant not supported yet" />

     <exec executable="${adb}" failonerror="true">
        <arg line="${adb.device.arg}" />
        <arg value="shell" />
        <arg value="uiautomator" />
        <arg value="runtest" />
        <arg value="${out.filename}" />
        <arg value="-e" />
        <arg value="class" />
        <arg value="com.android.uiautomator.samples.skeleton.DemoTestCase" />
    </exec>
</target>`

谢谢你的帮助。对我来说 uiautomator 不再是选择。问候

于 2014-01-14T12:02:45.200 回答
0

在运行 uiautomator Tests 命令时,按以下方式运行它

例子:

adb shell uiautomator runtest LaunchSettings.jar -c com.uia.example.my.LaunchSettings
adb shell uiautomator runtest "jar name" -c "packagename"."Classname"

这应该有效。

于 2013-12-28T09:15:43.270 回答
0
  1. 新的 JavaProjekt(导入 JUnit android.jar uiautomator.jar
  2. 创建包cdd
  3. 将 TestCase Device Unlocking pseudoTestCase 复制到 Projekt
  4. 运行 cmd 4.1。“设置 ANDROID_HOME=” 到 SDK 位置 4.2。\tools\ android 创建 uitestprojekt -n 名称 -t "android-16" -p projPath
  5. 编辑从 create 命令创建的 build.xml:添加代码:

<delete dir="jar"/>

<mkdir dir="jar" />

<javac destdir="bin" encoding="UTF-8" debug="on" target="1.6" includeantruntime="false"> 
    <src path="src" /> 
</javac> 
<jar destfile="jar/uiautomator.jar"> 
     <fileset dir="bin" /> 
</jar>
  1. 作为 antbuild 运行
  2. cmd -> cd ANDROID_HOME-> cd 平台工具
  3. adb push /jar/uiautomator.jar data/local/tmp
  4. adb -s shell uiautomator runtest DeviceUnlocker.jar -c cddDeviceUnlocker

这就是我所做的所有步骤

谢谢

于 2013-10-15T11:34:54.773 回答
0

我遇到了完全相同的问题,并做了一个快速的 haxx 来修复它:

通过以下方式解决:

  1. 转到您的 UiautomationTest 项目并从 bin/ 文件夹中复制类文件。就我而言,我复制了整个文件夹结构 com/poc/MyTest.class
  2. 转到 App-Under-Test 项目和 bin/ 文件夹中的类数据。就我而言,com/poc/MyTest.class 与 com/ 下的现有类合并
  3. 使用“ant build”重新构建 UiAutomation 项目
  4. 重新部署,现在你可以运行它了!

这只是一种解决方法,但它确定了根本情况 - 测试用例类已从 UiAutomator 构建步骤中排除

于 2013-12-20T10:43:24.743 回答
0

确保您已将 java 类编译到android dex中!

将纯 java“jar”包放入 /data/tmp/ 时,我遇到了同样的问题。

假设您的项目是device-unlock

cd device-unlock
android create uitest-project -n device-unlock -t 1 -p .
and build

现在你会在 中找到 dexed jar 包bin/device-unlock.jar,用 zip 打开它你会看到一个classes.dex.

有了这个jar,继续测试应该没问题。

于 2013-12-18T05:49:59.520 回答
0

检查此问题的最佳方法是在不使用的情况下运行此命令-c <classpath>#<testMethod>并检查它是否有效。如果它有效,请检查它在终端中打印的类名是与 -c 一起使用的类名

adb -s shell uiautomator runtest DeviceUnlocker.jar
于 2015-09-01T11:52:36.423 回答