【问题标题】:Android MVP - View unit tests - setting the presenterAndroid MVP - 查看单元测试 - 设置演示者
【发布时间】:2018-03-19 13:18:04
【问题描述】:

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

代码如下:

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的模拟方法是否被调用是不可能的。我的问题是 - 我需要改变什么才能使其可测试?

【问题讨论】:

    标签: android unit-testing mockito android-mvp


    【解决方案1】:

    使用 Robolectric:

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

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

    编辑:

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

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

    【讨论】:

    • 我正在使用 Robolectric。问题是你答案的第二部分,因为在一个方法中我们创建和使用同一个对象
    • 我明白 - 正如我所写的,我建议使用 DI。这就是UT应该如何做的。但是,如果您想避免比模拟构造函数大的代码重构。我已经编辑了我的答案
    猜你喜欢
    • 2019-09-27
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    • 2019-12-04
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多