【发布时间】:2014-06-25 21:19:10
【问题描述】:
在使用 Android 测试框架测试 Android 应用时,如何让测试等待我在继续之前等待网络响应。我不想使用 Thread.sleep,因为不确定我要等待多长时间。还尝试了 waitForIdleSync() 但它似乎不起作用。有没有其他办法?
我有输入用户名和密码并单击登录按钮的 enterCredentials 方法。在获取用户对象以验证凭据之前,我需要等待一段时间才能获取用户对象并将其保存在数据库中。我想在这里替代 Thread.sleep() 。我已经尝试过 waitForIdleSync() 但这似乎不起作用。
@Override
protected void setUp() throws Exception {
super.setUp();
mActivity = getActivity();
enterCredentials();
Thread.sleep(2000);
testLoggedInUser();
}
public void testLoggedInUser() {
mMyApplication = this.getInstrumentation().getTargetContext().getApplicationContext();
User user = mMyApplication.getUser();
String email = user.getEmail();
assertEquals(EMAIL, email);
}
public void enterCredentials() {
final EditText mUsername = (EditText) mActivity.findViewById(R.id.email);
final EditText mPassword = (EditText) mActivity.findViewById(R.id.password);
final Button login = (Button) mActivity.findViewById(R.id.logIn);
mActivity.runOnUiThread(new Runnable() {
public void run() {
mUsername.setText(EMAIL);
mPassword.setText(PASSWORD);
login.performClick();
}
});
}
【问题讨论】:
-
..什么??请细化您的问题,因为我不明白您的问题是什么..
-
你在运行什么样的测试?除了验收/集成测试,你的测试应该是快速和独立的,你应该模拟/窥探/...你的边界,特别是网络请求
-
我正在尝试在我的应用程序中测试登录功能,我在其中输入凭据并发送发布请求,服务器返回给我一个用户对象。所以在测试时我想等待接收这个用户对象,然后我可以验证用户凭据。那么在这种情况下如何让测试等待。
-
请同时显示一些您尝试过的代码。
-
现在有人可以取消货舱吗?
标签: android unit-testing wait