android uiautomator runtest错误没找到类

时间:2013-10-14 08:55:03

标签: java android jar runtimeexception uiautomator

最近我尝试开始使用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

6 个答案:

答案 0 :(得分: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不再是一个选择。 问候

答案 1 :(得分:0)

  1. new JavaProjekt(导入JUnit android.jar uiautomator.jar
  2. create packages c.d.d
  3. 将TestCase设备解锁,将pseudoTestCase解锁为Projekt
  4. 运行cmd 4.1。 “将ANDROID_HOME =”设置为sdk位置 4.2。 \ tools \ android create uitestprojekt -n name -t“android-16”-p projPath
  5. 编辑从create命令创建的build.xml: 添加代码:
  6. <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 - &gt; cd ANDROID_HOME-&gt; cd platform-tools
    3. adb push /jar/uiautomator.jar data / local / tmp
    4. adb -s shell uiautomator runtest DeviceUnlocker.jar -c c.d.d.DeviceUnlocker
    5. 这就是我所做的所有步骤

      感谢

答案 2 :(得分: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

现在您可以在bin/device-unlock.jar找到dexed jar包,用zip打开它会看到classes.dex

使用这个罐子,可以继续测试。

答案 3 :(得分:0)

我遇到了完全相同的问题并快速解决了问题:

通过以下方式解决:

  1. 转到UiautomationTest项目并从bin /文件夹中复制 classfile(s)。在我的情况下,我复制了整个文件夹结构 com / poc / MyTest.class
  2. 转到App-Under-Test项目并进入 bin /文件夹经过类数据。在我的例子中是com / poc / MyTest.class 与com /
  3. 下的现有类合并
  4. 使用“ant build”重新构建UiAutomation项目
  5. 重新部署,现在您可以运行它了!
  6. 这只是一种解决方法,但它确定了根案例 - 测试用例类被排除在UiAutomator buildstep之外

答案 4 :(得分:0)

运行uiautomator Tests命令时,以下面的方式运行它

示例:

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

这应该有用。

答案 5 :(得分:0)

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

一起使用的类名
adb -s shell uiautomator runtest DeviceUnlocker.jar