如何/应该使用 Mockito 对 EventBus 事件进行单元测试?

2024-04-08

我在 Android 应用程序中使用 Otto 的 EventBus。

In my LoginNetworkOperation类中,我捕获了不同类型的网络连接错误,并为每个错误发布了不同的总线事件,并且我的LoginPresenter当这些事件被触发时,类被注册为侦听器并调用某些方法。

我的问题是如何(以及我应该)进行单元测试是否LoginNetworkOperation抛出这个事件并且LoginPresenter处理它与Mockito?

我看了这个问题:Guava EventBus 单元测试 https://stackoverflow.com/questions/16414912/guava-eventbus-unit-tests但它没有提供足够的信息,特别是在实现部分。

public class LoginNetworkOperation {

    public void execute(String username, String password) {
        try {
            // retrofit attempt
        } catch (Exception e) {
            bus.post(new ExceptionEvent(e));
        }
    }
}

public class LoginPresenter {

    void onExceptionEvent(ExceptionEvent exceptionEvent) {
        // Do Something with the exception event
    }
}

另外,哪个应该是Subject Under Test这里哪个应该是模拟对象?

我在 Android Studio 中使用 JUnit + Mockito + Robolectric,我的测试工件是单元测试


我的问题是如何(以及我应该)进行单元测试是否 LoginNetworkOperation 抛出此事件,LoginPresenter 处理它 与莫基托?

这已经是一个集成测试:您正在组合各个软件模块并验证它们作为一个组的行为。

在这种情况下,“测试对象”是以下组合:LoginNetworkOperation, EventBus and LoginPresenter模拟对象是输入LoginNetworkOperation以及处理输出的任何内容LoginPresenter.


这三个软件模块也可以进行单元测试:

  • LoginNetworkOperation.execute: 嘲笑EventBus并验证它是否被正确调用ExceptionEvent对于不同的输入。
  • LoginPresenter.onExceptionEvent:验证不同的行为是否正确ExceptionEvents.
  • EventBus.post: 注册一个模拟的ExceptionEvent- 处理程序,发布ExceptionEvent并检查 Handler 是否被调用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何/应该使用 Mockito 对 EventBus 事件进行单元测试? 的相关文章

随机推荐