当前位置: 首页 > 知识库问答 >
问题:

AsyncTask运行时Espresso test back按钮

暴乐邦
2023-03-14

我正在使用Espresso为我的应用程序编写UI测试。我想测试这样一个事实,如果我点击后退按钮,而服务器请求正在进行,应用程序必须保持原地。

那么,如何测试以下场景:

  • 单击触发AsyncTask的按钮
  • 测试当任务正在运行并且我按下后退按钮时,应用程序是否仍在运行?

有可能吗?

共有1个答案

戚奇略
2023-03-14

那很棘手。对于AsyncTasks,在任务运行时不能使用浓缩咖啡。如果你想用其他东西做后台工作,Espresso不会等待,测试会在后台工作之前完成。

一个简单的解决办法是在任务运行时“按”后退按钮而不加浓缩咖啡。因此,启动任务,调用activity.onbackpressed()并在任务完成后使用Espresso检查活动是否仍然可见:

// Start the async task    
onView(withId(R.id.start_task_button)).perform(click());

// Then "press" the back button (in the ui thread of the app under test)
mActivityTestRule.runOnUiThread(new Runnable() {
    @Override
    public void run() {
        mActivityTestRule.getActivity().onBackPressed();
    }
});

// Then check that the Activity is still visible
// (will be performed when the async task has finished)
onView(withId(R.id.any_view_on_activity)).check(matches(isDisplayed()));
 类似资料:
  • 问题内容: 我在应用程序中使用AsyncTask下载URL。我在onPreExecute()上使用ProgressDialog进行等待。但是我在进程完成时看不到ProgressDialog,我看了一会儿。想要在下载之后看到它。谁能帮我。谢谢我的代码是这样的: 问题答案: 首先,请注意所有AsyncTask实现的方法附带的“ @override”标头,例如 除非您必须在UI上执行某些操作,否则还要从

  • 我一直在尝试一个应用程序,其中我使用AsyncTask从sqlite表中检索数据。它有时工作起来没有那么多问题。但是当它失败时,Logcat看起来像这样 07-24 16:06:20.477: E/AndroidRuntime(950): 致命异常: 异步任务 #1 07-24 16:06:20.477: E/AndroidRuntime(950): java.lang.RuntimeExcept

  • 如果你能帮我解决这个问题,我会非常非常感激的。 我已经审阅了logcat,但不能理解它,除了按钮(onClick)是问题所在。我不知道怎么修好它。 这在logcat中每隔几秒钟就会以红色显示:E/TZ_CCM_Server:仅支持“CCM” 以下是与运行时崩溃相关的完整错误日志: 编辑:MainActivity/java代码: XML代码:

  • 活动: 类 updateTwitterStatus extends AsyncTask { 这就是 LogCat 06-05 18:00:26.696: E/AndroidRuntime(1516): 致命异常: AsyncTask #2 06-05 18:00:26.696: E/AndroidRuntime(1516): java.lang.RuntimeException: 执行 doInB

  • 所以我对Java Swing GUI是新手,我正在创建一个学生管理系统。这个想法是,当程序启动时,屏幕上的每个模块都有一个按钮,单击每个按钮会将您带到另一个包含模块信息的窗口。我想要一个能够添加和删除模块的功能,所以我的想法是,在运行时,您可以添加一个代表新模块的新按钮,或者在您想要删除该模块时删除一个按钮。 我已经尝试了许多不同的东西,但我遇到的问题最多的是我可以创建按钮,但我不能将其添加到框架

  • 问题内容: 当我在一个类文件中使用代码时,它可以完美运行: 我想从其他类文件运行我的异步任务,我有代码: 下载File.java 下载FileAsync.java 我正在使用eclipse,并且我的DownloadFile.java文件中出现错误,有很多带红色下划线的代码…。我是java和android dev的新手。 问题答案: 如果可以通过某种方式将Activity类或其上下文传递给Async