-1
使用Android测试框架测试Android应用程序时,如何使测试等待我在继续之前等待网络响应。我不想使用Thread.sleep,因为我不确定要等多久。还尝试了waitForIdleSync(),但它似乎不工作。有没有其他方法?Android单元测试
我有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();
}
});
}
..很??请细化你的问题,因为我不明白你的问题是什么。 – cybermonkey
你正在运行什么样的测试?,除了接受/集成测试你的测试应该是快速和独立的,你应该模拟/间谍/ ......你的界限,特别是网络请求 – tkanzakic
我想在我的应用程序中测试登录功能,我输入凭据并发送发布请求,服务器返回给我一个用户对象。所以在测试时我想等待接收这个用户对象,然后我可以验证用户凭证。那么在这种情况下,我该如何让测试等待呢? – user3773337