我正在使用Espresso为我的应用程序编写UI测试。我想测试这样一个事实:如果我在服务器请求正在进行时单击后退按钮,应用程序必须保持原样。
似乎不可能由于espresso的体系结构使得测试执行等待一些后台操作(如AsyncTask)被触发。
那么,我该如何测试以下场景:
可能吗?
谢谢
答案 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);
防止按下按钮。
此致