我在为我的应用编写测试用例时遇到问题。
首先,我可能会告诉应用程序的工作原理。第一个屏幕是登录屏幕,成功登录后,将显示一个新活动,并将用户凭据保存到SharedPreferences,以便当活动再次启动且用户未注销时,应用程序将在第二个活动屏幕上启动。 / p>
我想用登录测试第一个活动。我的主要问题是如何测试成功登录。如果登录名和密码有效,则会创建新活动的意图并启动新活动。我的此方法代码如下所示:
public void testLoginValid() throws Throwable {
for(index = 0; index < validEmails.length; index++) {
runTestOnUiThread(new Runnable() {
@Override
public void run() {
emailEditView.setText(validEmails[index]);
passwordEditView.setText(defaultPassword);
logIn.performClick();
}
});
getInstrumentation().waitForIdleSync();
//how to check if the activity started and how to go back?
}
}
这是测试此类情况的好方法吗?问题是当登录有效并且登录时,其余的测试用例都会挂起,因为活动活动已经改变,我不知道如何模拟它的完成是这样的。这该怎么做?或者也许我应该为每个登录编写方法(但我认为这不是一个好习惯......)。提前感谢您的帮助。
答案 0 :(得分:2)
如果您的任务是测试登录,您可以通过一些模拟操作替换实际的新活动,并检查此操作是否开始。希望这会有所帮助。
答案 1 :(得分:0)
为了运行测试而对代码进行临时更改的问题在于,您没有测试“真实”代码,并且您只能偶尔运行测试。更好的是进行设置,以便您可以随时自动运行所有测试。这是测试驱动开发背后的理念。
不幸的是,Android让它变得更加困难 - 但事情正在改善:
对于设备外测试,请查看Robolectric。
对于设备上测试,请查看Borachio。