标签: robotium

如何使用Robotium/Android SDK找出堆栈顶部的Activity?

我有一个Android应用程序的Robotium测试,它扩展了ActivityInstrumentationTestCase2.测试在循环上运行,随机单击活动视图.我想在每次迭代开始时验证哪个Activity当前是关注的.这种行为对我很重要,因为其中一个按钮能够启动另一个Activity,在循环中进行进一步的操作是不可能的,因为它们引用了测试中的Activity(这是我停止Robotium测试的时候).

我想要一个适用于任何Activity的通用解决方案,而无需更改onDestroy()方法.当按下Home按钮时,此解决方案也必须有效.

android robotium android-sdk-tools android-activity

10
推荐指数
1
解决办法
473
查看次数

切换到AndroidJUnitRunner后,现有的Android UI测试停止工作

我们必须围绕我们的照相机功能的一些UI测试,之后我们从做了开关InstrumentationTestRunner,以AndroidJUnitRunner作为我们移动到咖啡/ JUnit4的一部分,我们再也不能可靠地运行我们现有的测试,由于频繁的RuntimeException当我们调用getActivity():

java.lang.RuntimeException: Could not launch intent Intent { flg=0x14000000 cmp=com.cookbrite.dev/com.cookbrite.ui.ReceiptCaptureActivity (has extras) } within 45 seconds. Perhaps the main thread has not gone idle within a reasonable amount of time? There could be an animation or something constantly repainting the screen. Or the activity is doing network calls on creation? See the threaddump logs. For your reference the last time the event queue was idle before your activity launch request was 1434471981236 and …
Run Code Online (Sandbox Code Playgroud)

android robotium android-testing

10
推荐指数
1
解决办法
1866
查看次数

Robotium的例子

我找到了一个名为Robotium的仪器测试工具.它对于Android应用程序的黑盒测试来说简单易行.我们可以使用它如下:

    solo.clickOnText("Other");
    solo.clickOnButton("Edit");
    assertTrue(solo.searchText("Edit Window"));
    solo.enterText(1, "Some text for testing purposes")
    solo.clickOnButton("Save");
    assertTrue(solo.searchText("Changes have been made successfully"));
    solo.clickOnButton("Ok");
    assertTrue(solo.searchText("Some text for testing purposes"));
Run Code Online (Sandbox Code Playgroud)

任何人都可以对它有更多的了解吗?任何人都可以告诉我们如何将它用于webviews和listviews等.

testing instrumentation android robotium

9
推荐指数
2
解决办法
3万
查看次数

尝试在null对象引用上调用接口方法finishComposingText()

我在nexus 6上运行robotium并得到以下错误

 java.lang.NullPointerException: Attempt to invoke interface method      'boolean android.view.inputmethod.InputConnection.finishComposingText()' on      a null object reference
 at android.view.inputmethod.InputConnectionWrapper.finishComposingText(InputConnectionWrapper.java:78)
 at android.view.inputmethod.InputMethodManager.reportFinishInputConnection(InputMethodManager.java:859)
 at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:3253)
 at android.os.Handler.dispatchMessage(Handler.java:102)
 at android.os.Looper.loop(Looper.java:135)
 at android.app.ActivityThread.main(ActivityThread.java:5221)
 at java.lang.reflect.Method.invoke(Native Method)
 at java.lang.reflect.Method.invoke(Method.java:372)
 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Run Code Online (Sandbox Code Playgroud)

有问题的一行是:

     solo.enterText((android.widget.EditText) solo.getView("amount"), "11.11");  
Run Code Online (Sandbox Code Playgroud)

我已经确认该字段存在,不确定还有什么可能导致问题.任何帮助,将不胜感激

java testing android robotium

9
推荐指数
2
解决办法
4533
查看次数

使用Robotium进行Android测试注释

我目前正在Android中构建一个应用程序,并使用Robotium进行功能测试(顺便说一下,不要在没有Android 1.6的情况下使用Robotium,这太麻烦了).

其中一些测试有随机的失败倾向,主要是Robotium缺少文本字段,或超时,而不是阅读文本.我正在尝试使用@FlakyTest注释,因此它们会在抛出失败的测试错误之前运行两到三次.但是,注释不起作用,测试在失败后不会重新运行.

以下是我使用注释的方法:

public class ClassName extends ActivityInstrumentationTestCase2<HomeActivity>{

        @LargeTest
        @FlakyTest(tolerance=3)
        public void testMethod(){

        //Here I run my roboitium scripts.

        }
}
Run Code Online (Sandbox Code Playgroud)

然后我从命令行运行它:

adb shell am instrument -w com.jayway.test/android.test.InstrumentationTestRunner

eclipse和测试的命令行执行都没有考虑到片状测试注释.有没有人看到我试图申请的错误@FlakyTest

android robotium

8
推荐指数
1
解决办法
4232
查看次数

使用Teamcity界面Android机器人测试

由于之前没有回答(也许我没有找到),我调查了以下问题:

如何使用robotium在Android设备上执行自动功能测试,并将其报告给TeamCity等持续集成服务器?

teamcity android automated-tests robotium

8
推荐指数
1
解决办法
3202
查看次数

为什么在ActionBarActivity上运行测试时会出现NoClassDefFoundError?

所以我使用Robotium,我的测试类正在扩展ActivityInstrumentationTestCase2该类.我已经在我的主项目中导入了v7支持库,并在测试项目中导入了库.

现在我不明白的是,当我将测试中的类更改为扩展Activity时,测试类正在工作,但是当我将其更改为ActionBarActivity它时返回一个NoClassDefFoundError.

我错过了什么吗?

这是我得到的日志

04-11 21:32:16.551: E/dalvikvm(23925): Could not find class 'com.example.project.ActivityClass', referenced from method com.example.project.tests.ActivityClass.<init>
Run Code Online (Sandbox Code Playgroud)

java android unit-testing robotium android-actionbaractivity

8
推荐指数
1
解决办法
386
查看次数

无法在45秒内启动Intent - robotium

我正面临着一个我一直试图解决的大问题.我正在尝试使用robotium运行测试,但是当我调用getActivity()setup方法时,RuntimeException会抛出异常.

java.lang.RuntimeException:无法在45秒内启动意图Intent {act = android.intent.action.MAIN flg = 0x14000000 cmp = com.company.app/.SplashActivity}.也许主线程在合理的时间内没有闲置?可能会有一个动画或不断重新绘制屏幕的东西.或者活动是在创建网络呼叫?请参阅threaddump日志.在您的活动启动请求为1463908619275之前,事件队列最后一次空闲以供您参考,现在队列最后一次空闲时间是:1463908619275.如果这些数字相同,您的活动可能会占用事件队列.

我正在使用机器人5.4.4

android ui-testing robotium

8
推荐指数
0
解决办法
1043
查看次数

可以通过robotium在测试用例中打开/关闭wifi

我们可以在机器人的测试案例中打开/关闭设备的Wi-Fi吗?因为我正在测试一个问题,需要在初始阶段启用wifi,然后关闭Wi-Fi并继续测试.

android robotium

7
推荐指数
1
解决办法
3377
查看次数

单击Robotium中的操作栏菜单项

我正在尝试在Robotium中运行一些自动化测试.我的应用程序中有以下代码,用于设置选项菜单:

  public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) {
    com.actionbarsherlock.view.MenuInflater inflater = getSupportMenuInflater();
        inflater.inflate(R.layout.logoutmenu, menu);
        return super.onCreateOptionsMenu(menu);
   }
Run Code Online (Sandbox Code Playgroud)

我尝试使用代码单击Robotium中的菜单:

solo.sendKey(Solo.MENU);
solo.clickOnView(solo.getView(R.id.share)); //share is the id of the menu item
Run Code Online (Sandbox Code Playgroud)

但是我的测试因错误而失败:

View is null and therefore cannot be clicked.
Run Code Online (Sandbox Code Playgroud)

我也尝试使用下面的代码也失败了:

solo.clickOnView(solo.getView(R.id.logoutmenu));
solo.clickOnMenuItem("Share My Artists"); 
Run Code Online (Sandbox Code Playgroud)

android robotium actionbarsherlock

7
推荐指数
1
解决办法
5792
查看次数