1

我今天正在对一个简单的应用程序进行单元测试。我有一个方法

protected void onRestart() {
    disp.setText("The numbers you entered were");
    super.onRestart();
}

在我的测试用例中,我正在使用

public void testRestart(){
    String dispText = disp.getText().toString();
    getInstrumentation().callActivityOnStop(mActivity);
    assertEquals(dispText, disp.getText().toString());
}

断言返回 true 表示文本没有改变。但是,当我使用

public void testRestart(){
    String dispText = disp.getText().toString();
    getInstrumentation().callActivityOnRestart(mActivity);
    assertEquals(dispText, disp.getText().toString());
}

正如预期的那样,断言是错误的。

根据活动生命周期,如果用户离开活动,则应始终在 onStop() 之后调用 onRestart()。

不应该在 onStop() 之后调用 onRestart() 方法吗?还是调用会getInstrumentation().callActivityOnStop(mActivity);杀死活动,而不仅仅是停止它?

4

1 回答 1

3

ActivityUnitTestCase是单个Activity的独立单元测试。被测活动不参与系统交互。

您可以使用Activity 启动您的ActivitystartActivity(),它会调用Activity onCreate(),但是如果您希望进一步练习Activity生命周期方法,您必须自己从测试用例中调用它们。

于 2013-08-09T05:21:37.053 回答