AsyncTask运行时Espresso测试后退按钮

时间:2016-07-14 14:35:55

标签: android android-espresso ui-testing

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

似乎不可能由于espresso的体系结构使得测试执行等待一些后台操作(如AsyncTask)被触发。

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

  • 点击触发AsyncTask的按钮
  • 测试当任务正在运行时我按下后退按钮,应用程序停留在那里?

可能吗?

谢谢

2 个答案:

答案 0 :(得分:1)

这太棘手了。使用$(document).ready(function () { $('#save').validate({ onchange: function (element) { this.element(element); console.log('onchange fired'); }, onfocusout: function (element) { this.element(element); console.log('onfocusout fired'); } }); }); 时,您无法在任务运行时使用Espresso。 如果您使用其他东西进行背景工作,Espresso不会等待,测试在后台工作之前完成。

一个简单的解决方法是"按"任务运行时没有Espresso的后退按钮。因此,启动任务,致电AsyncTasks,任务完成后,使用Espresso检查Activity.onBackPressed()是否仍然可见:

Activity

答案 1 :(得分:0)

按下后退按钮时,可以阻止应用程序触发finish()。为此,只需覆盖public void onBackPressed()而不调用super.onBackPressed()即可。就像:

@Override
public void onBackPressed() {
  // super.onBackPressed();
}

此外,如果您在执行任务时显示对话框,则可以使用

myDialog.setCancelable(false);
myDialog.setCanceledOnTouchOutside(false);

防止按下按钮。

此致