2013-03-26 137 views
4

我的代码如下,错误UIAuitomator代码

package com.example.automatorapp.test; 

import com.android.uiautomator.core.UiObjectNotFoundException; 
import com.android.uiautomator.testrunner.UiAutomatorTestCase; 

public class Try2 extends UiAutomatorTestCase 
{ 

public void demo() throws UiObjectNotFoundException 
{ 


    getUiDevice().pressHome(); 
} 



} 

,误差...

java.lang.RuntimeException: Exception during suite construction 
at android.test.suitebuilder.TestSuiteBuilder$FailedToCreateTests.testSuiteConstructionFailed(TestSuiteBuilder.java:238) 
at java.lang.reflect.Method.invokeNative(Native Method) 
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:1661) 
Caused by: java.lang.reflect.InvocationTargetException 
at java.lang.reflect.Constructor.constructNative(Native Method) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:417) 
at android.test.suitebuilder.TestMethod.instantiateTest(TestMethod.java:93) 
at android.test.suitebuilder.TestMethod.createTest(TestMethod.java:73) 
at android.test.suitebuilder.TestSuiteBuilder.addTest(TestSuiteBuilder.java:262) 
at android.test.suitebuilder.TestSuiteBuilder.build(TestSuiteBuilder.java:184) 
at android.test.InstrumentationTestRunner.onCreate(InstrumentationTestRunner.java:379) 
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4382) 
at android.app.ActivityThread.access$1300(ActivityThread.java:141) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1294) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:5041) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.RuntimeException: Stub! 
at com.android.uiautomator.testrunner.UiAutomatorTestCase.<init>(UiAutomatorTestCase.java:5) 
at com.example.automatorapp.test.Pun.<init>(Pun.java:10) 
... 18 more 

我的MainActivity没有problem.It工作fine.but这一测试案例给出一些错误。并且可以告诉我如何添加uautomator.jar的javadoc。因为我无法找到uautomator的javadoc的apk。

+0

你需要发布所有相关的代码 – CocoNess 2013-03-26 07:28:07

回答

1

测试用例需要有public void test...() { ... }

你的代码标准的JUnit 3风格的方法签名的demo()方法一旦你添加前缀如下测试,testdemo()那么测试是发现和执行。

为了完整起见,这里是测试运行时2的区别。首先,什么本质上是一个与方法public void demo()

UIAutomatorExample$ adb shell uiautomator runtest UIAutomatorExample.jar -c com.example.automatoapp.test.Try2 
INSTRUMENTATION_STATUS: stream= 
Test results for WatcherResultPrinter= 
Time: 0.0 

OK (0 tests) 

而且一次你的代码的方法已经被正确地命名public void testdemo()

UIAutomatorExample$ adb shell uiautomator runtest UIAutomatorExample.jar -c com.example.automatoapp.test.Try2 
INSTRUMENTATION_STATUS: current=1 
INSTRUMENTATION_STATUS: id=UiAutomatorTestRunner 
INSTRUMENTATION_STATUS: class=com.example.automatoapp.test.Try2 
INSTRUMENTATION_STATUS: stream= 
com.example.automatoapp.test.Try2: 
INSTRUMENTATION_STATUS: numtests=1 
INSTRUMENTATION_STATUS: test=testdemo 
INSTRUMENTATION_STATUS_CODE: 1 
INSTRUMENTATION_STATUS: current=1 
INSTRUMENTATION_STATUS: id=UiAutomatorTestRunner 
INSTRUMENTATION_STATUS: class=com.example.automatoapp.test.Try2 
INSTRUMENTATION_STATUS: stream=. 
INSTRUMENTATION_STATUS: numtests=1 
INSTRUMENTATION_STATUS: test=testdemo 
INSTRUMENTATION_STATUS_CODE: 0 
INSTRUMENTATION_STATUS: stream= 
Test results for WatcherResultPrinter=. 
Time: 1.53 

OK (1 test) 

而这里的示例代码修正版本:

package com.example.automatoapp.test; 

import com.android.uiautomator.core.UiObjectNotFoundException; 
import com.android.uiautomator.testrunner.UiAutomatorTestCase; 

public class Try2 extends UiAutomatorTestCase 
{ 
    public void testdemo() throws UiObjectNotFoundException 
    { 
     getUiDevice().pressHome(); 
    } 
}