2013-07-19 105 views
3

實際上,我想實現它使用下面的類在AndroidJunit測試運行UiAutomatorTestcase項目

  • UIObject的
  • UiSelector
  • UiAutomatorTestcase
的AndroidJunit測試項目中的一個簡單的測試套件

單擊並打開Android設備上的消息應用程序,然後在Eclipse中將其作爲AndroidJunit測試運行。

運行代碼時,我得到下面的異常

了java.lang.RuntimeException:存根!

我不明白我要去哪裏錯了。請讓我知道我們是否可以使用AndroidJuint Test項目來運行UiAutomatorTestcase測試套件。

下面是示例代碼和故障跟蹤

public class UiautomatorTest extends 
     ActivityInstrumentationTestCase2<MyMainActivity> { 

    UiAutomatorTestCase mUiAutomatorTestCase; 

    public UiautomatorTest() { 
     super(MyMainActivity.class);`enter code here` 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    protected void setUp() throws Exception { 
     // TODO Auto-generated method stub 
     super.setUp(); 
     mUiAutomatorTestCase = new UiAutomatorTestCase(); 
    } 

    public void testToOpenMessageApp() throws UiObjectNotFoundException { 
     UiObject message = new UiObject(
       new UiSelector().description("Messaging")); 
     message.clickAndWaitForNewWindow(); 

     UiObject composeMessage = new UiObject(
       new UiSelector().description("compose")); 
     composeMessage.clickAndWaitForNewWindow(); 

     UiObject typeMessage = new UiObject(
       new UiSelector().description("Type Message")); 
     typeMessage.clickAndWaitForNewWindow(); 
     mUiAutomatorTestCase.getUiDevice().pressHome(); 

    } 

} 

堆棧跟蹤

java.lang.RuntimeException: Stub! 
at mypackagename.UiAutomatorTestCase.<init>(UiAutomatorTestCase.java:5) 
at mypackagename..setUp(UiautomatorTest.java:25) 
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:190) 
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:175) 
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555) 
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1584) 
+0

你能發佈堆棧從logcat跟蹤? – mach

+0

我附上了失敗跟蹤 –

回答

0

作爲標準配置,UI的Automator測試編譯並建成一個jar文件,在桌面計算機上,他們然後通過使用adb將jar文件推送到設備來部署到設備。然後他們在設備上運行,在Android運行時通過使用adb shell uiautomator ...感謝https://stackoverflow.com/users/363437/vidstige糾正我之前發佈的不準確的帖子。

幫助您運行測試的最快方式可能是將您的代碼發佈爲問題的一部分。

更新2013年7月22日 我還沒有看到其他人試圖直接在設備上運行測試用例,而不是按照Google(Android)文檔的方法構建它們。它可能可能是可能的,但是你可能必須努力工作,以發現你的方法是可能的或可行的。 UIAutomator與Android InstrumentationTestCase框架截然不同。相反,它與GUI進行交互,並且具有能夠與各種應用進行交互的優勢,包括諸如Android設備內置的設置UI之類的內容。

我建議你從Android開發站點http://developer.android.com/tools/testing/testing_ui.html的文檔教程開始,看看你能否得到這個工作。您需要使用運行Android 4.2的設備(或更高版本用於您在Android新版本發佈時閱讀此內容的設備)。一旦你有了教程的工作,我希望這將是一個很好的起點,爲任何你想要編寫自動化測試的應用程序編寫UIAutomator測試。

歡迎您發佈其他更新。

+0

嗨,朱利安我已經附上示例代碼到上面的帖子 –

+0

實際上,UiAutomator測試_are_在Android運行時運行。 – vidstige

2

你需要在android設備上運行測試。爲了這個工作,代碼需要在dexed之前運行,等等。閱讀更多here關於如何構建你的測試在android上運行。

運行,像這樣

adb shell uiautomator runtest <JARS> -c <CLASSES> [options] 

official documentation測試。

要在目標設備上運行測試用例,可以使用adb shell 命令來調用uiautomator工具。

+0

我可以用上面提供的程序運行測試套件。但我的實際擔心是檢查我們是否可以使用默認的Android測試項目運行Uiautomator juint測試。 –

+0

@RajeshSamson這應該是可能的。 – vidstige

0

您可以像腳本中使用與.SH

ant build 

$youtSdkPath/platform-tools/adb shell  rm /data/local/tmp/ProjectName.jar 
$youtSdkPath/platform-tools/adb push $pathProject/bin/ProjectName.jar /data/local/tmp/ 
$youtSdkPath/platform-tools/adb shell  uiautomator runtest ProjectName.jar -c ClassToTest 

慶典theScript.sh

相關問題