我今天在单元测试一个简单的应用程序。我有办法

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);杀死了活动,而不仅仅是停止了它?

最佳答案

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

您可以使用startActivity()启动Activity,它将调用onCreate(),但是,如果您想进一步练习Activity生命周期方法,则必须在测试用例中自行调用它们。

09-10 07:47
查看更多