我想为我的MainActivity编写单元测试。该活动具有MainPresenter。演示者具有方法A(),需要在onCreate()Activity内部调用

这是代码:

public class MainActivity implements MainContract.View {
    private MainPresenter presenter;

    @Override
    protected void onCreate(final Bundle savedInstanceState) {
      ...
      presenter = new MainPresenter(this);
      ...
      presenter.A();

    }
}


现在,我想创建一个模拟MainPresenter的单元测试,然后检查是否调用了A()方法。目前,我认为无法测试Presenter的模拟方法是否被调用。我的问题是-我需要更改使其可测试吗?

最佳答案

使用Robolectric:

    activity = Robolectric
            .buildActivity(MainActivity::class.java)
            .create().get()


并在您的MainActivity中使用依赖注入来提供演示者。

编辑:

如果您不想更改太多代码,还可以对MainPresenter的构造函数进行存根:

PowerMockito.whenNew(MainPresenter.class).withArguments(YOUR_ARGUMENTS).thenReturn(MOCKED_PRESENTER);

07-27 17:04