如何测试启动新活动的方法?

时间:2011-07-11 12:02:42

标签: android unit-testing testing junit

我在为我的应用编写测试用例时遇到问题。

首先,我可能会告诉应用程序的工作原理。第一个屏幕是登录屏幕,成功登录后,将显示一个新活动,并将用户凭据保存到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?
    }
}

这是测试此类情况的好方法吗?问题是当登录有效并且登录时,其余的测试用例都会挂起,因为活动活动已经改变,我不知道如何模拟它的完成是这样的。这该怎么做?或者也许我应该为每个登录编写方法(但我认为这不是一个好习惯......)。提前感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

如果您的任务是测试登录,您可以通过一些模拟操作替换实际的新活动,并检查此操作是否开始。希望这会有所帮助。

答案 1 :(得分:0)

为了运行测试而对代码进行临时更改的问题在于,您没有测试“真实”代码,并且您只能偶尔运行测试。更好的是进行设置,以便您可以随时自动运行所有测试。这是测试驱动开发背后的理念。

不幸的是,Android让它变得更加困难 - 但事情正在改善:

对于设备外测试,请查看Robolectric

对于设备上测试,请查看Borachio