2013-10-14 75 views
5

最近我嘗試了android uiautomation測試入門。android uiautomator runtest錯誤沒有找到類

來自開發者網站的教程我已經完成了幾次,現在遇到一些問題並解決它們之後,我遇到了一個更大的問題。

我創建了一個項目,導入了兩個jar文件,並構建了一個java testcase場景(本教程中的場景)。 之後,我使用shell命令行創建了一個uitest項目。更新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=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

+0

使用,你可以請把你的代碼的一部分?我的代碼 – Rilwan

+0

的部分都espacially從顯影劑站點 所述一個[Android開發](http://developer.android.com/tools/testing/testing_ui.html)並形成這個網站: [EveryOneTests](HTTP: //everybodytests.blogspot.de/2013/01/unlocking-your-android-test-devices.html) 從自己唯一的其他部分代碼是從我的回答將與代碼中的build.xml文件 –

+0

請張貼logcat的轉儲同樣,我們也可以檢查RuntimeException的到來。 –

回答

0
  1. 新JavaProjekt(進口的JUnit的android.jar uiautomator.jar
  2. 創建軟件包cdd
  3. 複製TestCase設備解鎖pseudoTestCase爲Projekt
  4. run cmd 4.1。 「設置ANDROID_HOME =」到sdk位置 4.2。 \工具\ Android的創造uitestprojekt -n名-t 「機器人-16」 -p projPath這是從創建命令創建
  5. 編輯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. 亞行推/jar/uiautomator.jar數據/本地/ tmp目錄
  4. ADB -s殼uiautomator的runTest DeviceUnlocker.jar -c cddDeviceUnlocker

那名所有步驟我已經做

感謝

+0

它編譯正確嗎?它是否顯示任何行與'[javac]'?您在'create'命令中提到的項目路徑是否正確?嘗試一下'ant clean build'?仍然失敗 - >然後你可以在班上單獨嘗試一些基本代碼(比如說只是喚醒設備)並運行。因爲我有類似的問題,那麼我必須逐個清除上面的所有'?'。它適用於我。 – Rilwan

+0

很好,在shell中運行這個行後,我想我的鏈接也複製粘貼鏈接沒有帶來任何好處。 以及我在eclipse IDE中運行ant build,因爲我的系統環境變量沒有爲ant設置,我不知道在eclipse中找到它的位置。你上面在幹什麼?我只能看到一個問號:-) –

+0

和是在日食它顯示了行javac和建立jarfile –

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包,拉鍊打開它,你會看到一個classes.dex

有了這個罐子,它應該是確定繼續測試。

0

我有完全相同的問題,並提出了快速haxx解決它:

解決這個問題的:

  1. 去你UiautomationTest項目,並從斌/文件夾複製 類文件(S)。在我的情況下,我複製了整個文件夾結構 com/poc/MyTest.class
  2. 轉到App-Under-Test項目和 bin /文件夾之後的類數據。在我的情況下,COM/POC/MyTest.class 下COM合併到現有的類/
  3. 重新建立與「Ant構建」
  4. 重新部署UiAutomation項目,現在你可以運行它!

這僅僅是一個解決辦法,但它標識的根的情況下 - 即測試用例類是從UiAutomator buildstep

0

排除當運行uiautomator測試命令,在以下方式

實施例運行:

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

這應該有效。

1

好最簡單的方法是隻建立在Eclipse中一個新的Android的JUnit PROJEKT。

我認爲這是或多或少等於uiautomator。 和我想你可能有相同的oportunities ...糾正我,如果我錯了...

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不再是選擇。 關於

0

檢查此問題的最佳方法是在不使用-c <classpath>#<testMethod>的情況下運行此命令並檢查它是否有效。 如果它工作檢查的類名稱,它打印在終端是一個與-c

adb -s shell uiautomator runtest DeviceUnlocker.jar