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

ini*_*lxy 8 junit android 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),但是没有效果.

我该怎么做才能克服这个问题?谢谢!

ini*_*lxy 4

getInstrumentation().addMonitor(NextActivity.class.getName(), null, true);
Run Code Online (Sandbox Code Playgroud)

成功了。请注意,最后一个参数是一个标志,指示是否阻止 Activity 启动。将其设置为 true 解决了问题。

链接到文档

  • 您在哪里添加此调用?您可以发布更完整的答案吗? (3认同)