8

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

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

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

我也尝试过 sendKeys(KeyEvent.KEYCODE_BACK),但这没有任何效果。

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

4

2 回答 2

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

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

链接到文档

于 2012-07-30T21:42:44.970 回答
0

就我而言,我只是在每个案例之后关闭活动:

public void tearDown() {
    // here goes other code to be executed after each test case
    getActivity().finish();
}
于 2018-08-16T15:12:30.927 回答