android uiautomator runtest error didn't find class

眉间皱痕 提交于 2019-12-22 07:39:09

问题


recent i tryied getting started with android uiautomation testing.

The tutorial from the developer site I've worked through a few times and after having some problems and solving them now I have got a bigger issue.

I created a project, imported the two jar files and builded a java testcase scenario (the one from the tutorial.) after that I created an uitest projekt with shell command line. updated the build.xml created a jar file and pushed it onto my device.

As far as good everything worked nicely upon this point.

But tryin to run my tests with the command line:

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

I only get the error:

INSTRUMENTATION_RESULT: shortMsg = java.lang.RuntimeException
INSTRUMENTATION_RESULT: longMsg=Didn't find class "c.d.d.DeviceUnlockingPseudoCodeTest on Path: /system/framework/android.test.runner.jar: /system/framework/uiautomator.jar:: /data/local/tmp/DeviceUnlocker.jar

INSTRUMENTATION_CODE: 0


回答1:


okay the easiest way is to only create inside eclipse a new android junit projekt.

i think this is more or less equal to uiautomator. and i think you might have the same oportunities ... correct me if i'm wrong...

uiautomator is still not running... and i also found some bugs in the uibuild.xml from android itself

<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>`

thanks for your help. for me uiautomator is no option anymore. regards




回答2:


  1. new JavaProjekt (import JUnit android.jar uiautomator.jar
  2. create packages c.d.d
  3. Copy TestCase Device Unlocking pseudoTestCase into Projekt
  4. run cmd 4.1. "set ANDROID_HOME=" to sdk location 4.2. \tools\ android create uitestprojekt -n name -t "android-16" -p projPath
  5. edit build.xml that was created from create command: added code:

<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. run as antbuild
  2. cmd -> cd ANDROID_HOME-> 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

that were all steps i've done

thanks




回答3:


Make sure you've compiled the java classes into android dex!

I've met the same issue when put a pure java "jar" package to /data/tmp/.

Assume your project is device-unlock:

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

Now you'll find the dexed jar package in bin/device-unlock.jar, open it with zip you'll see a classes.dex.

With this jar, it should be ok to continue your test.




回答4:


I had the exact same problem and made a quick haxx to fix it:

Solve it by:

  1. go to you UiautomationTest project and from the bin/ folder copy the classfile(s). In my case I copied the whole folderstructure com/poc/MyTest.class
  2. go to the App-Under-Test project and in the bin/ folder past the class data. In my case the com/poc/MyTest.class is merged with the existing classes under com/
  3. Re-build the UiAutomation project with "ant build"
  4. re-deploy and now you can run it!

This is just a workaround but it identified the root case - that the testcase class is excluded from the UiAutomator buildstep




回答5:


While running the uiautomator Tests command run it in the below way

Example:

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

This should work.




回答6:


Best way to check this problem is to run this command without using -c <classpath>#<testMethod> and check if it works. If it works check for the class name that it prints in the terminal is the one that's used with -c

adb -s shell uiautomator runtest DeviceUnlocker.jar


来源:https://stackoverflow.com/questions/19356650/android-uiautomator-runtest-error-didnt-find-class

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!