使用ActivityInstrumentationTestCase2进行Android单元测试,当前一个测试用例导致另一个Activity被启动时,getActivity()会挂起

时间:2012-07-27 18:27:34

标签: android junit android-activity

我正在尝试使用ActivityInstrumentationTestCase2为登录活动运行多个测试用例。第一个测试用例测试登录成功,这会导致Activity通过调用startActivity(Intent intent)启动下一个Activity。现在,我正在尝试测试的Activity上有另一个Activity。第一个测试用例通过,第二个测试用例启动。但是当它被第二个测试用例调用时,它将永远挂在getActivity()上。

如果我进入登录Activity的代码并注释掉调用startActivity(Intent intent)的部分,那么两个测试用例都将成功运行。

我已经尝试了一些事情。我使用Intent.FLAG_ACTIVITY_CLEAR_TOP来清除Activity堆栈。在这种情况下,顶部活动被关闭,并且显示登录活动,但是当第二个测试用例启动时它仍然停留在getActivity()。

我也试过sendKeys(KeyEvent.KEYCODE_BACK),但是没有效果。

我能做些什么来克服这个问题?谢谢!

2 个答案:

答案 0 :(得分:4)

getInstrumentation().addMonitor(NextActivity.class.getName(), null, true);

诀窍。请注意,最后一个参数是一个标志,指示是否阻止活动启动。将其设置为true可以解决问题。

link to doc

答案 1 :(得分:0)

就我而言,在每种情况下我都只是关闭活动:

statuses/update/