在Robotium Testcase中被错误的线程异常调用

时间:2013-10-16 07:40:35

标签: android unit-testing testing junit robotium

我正在使用Robotium为我的Android应用程序编写Testcase,它有多个活动。该应用在UI中实现Drawer。但是当solo打开抽屉时,它会给出异常Called From Wrong Thread Exception。单击ActionBar Home时,抽屉会加载。

public void test4Drawer()
{
    solo1.clickOnActionBarHomeButton();
    Boolean actual=solo1.searchText("About");
    Boolean expected =true;
    assertEquals("Drawer Not Loaded",expected,actual);
}

2 个答案:

答案 0 :(得分:1)

在你的setUp()中:

mActivity = getActivity();

在你的测试用例中加上这个:

mActivity.runOnUiThread(new Runnable() {
    public void run() {
        solo1.clickOnActionBarHomeButton();
    }
});

但是当您使用标准robotium方法时,不应出现错误。如果此解决方案不适合您,请在此处共享完整堆栈跟踪。

答案 1 :(得分:1)

4.3版本的Robotium runOnUiThread中存在问题无济于事。

正如关联的bug report所说,它已在Robotium 4.3.1版本中得到修复。

下载here

如果保留runOnUiThread代码并升级lib,则logcat中会有更明确的异常:

E/AndroidRuntime(32201): java.lang.RuntimeException:
  This method can not be called from the main application thread

删除runOnUiThread即可。