我在 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(使用前将#替换为@)