java - 测试是否使用 JUnit 或 Mockito 从类中调用了另一个方法
问题描述
我有这样的课
public class LoginPresImpl implements LoginAPIInterface.LoginDataListener, LoginAPIInterface.LoginPresenter{
LoginAPIInterface.LoginView loginView;
LoginAPIInterface.LoginDataInteractor loginDataInteractor;
public LoginPresImpl(LoginAPIInterface.LoginView loginView) {
this.loginView = loginView;
loginDataInteractor=new LoginDataModel(this);
}
@Override
public void getLoginUpdateData(String username, String password,String registrationToken) {
loginDataInteractor.getLoginData(username,password,registrationToken);
}
}
我想测试是否调用
获取登录更新数据()
将调用 loginDataInteractor 的 getLoginDate() 方法。我创建了一个这样的测试类
public class LoginPresImplTest {
LoginAPIInterface.LoginDataInteractor loginDataInteractorMock;
LoginAPIInterface.LoginView loginViewMock;
LoginPresImpl loginPres;
@Before
public void setUp(){
loginDataInteractorMock = Mockito.mock(LoginAPIInterface.LoginDataInteractor.class);
loginViewMock = Mockito.mock(LoginAPIInterface.LoginView.class);
loginPres = Mockito.spy(LoginPresImpl.class);
}
@Test
public void getLoginUpdateData() {
loginPres.getLoginUpdateData("01","","");
verify(loginPres).getLoginUpdateData("01","","");
}
但我不知道如何检查是否调用
获取登录更新数据()
最终会打电话
loginDataInteractor.getLoginData()
方法。如何使用 JUnit 或 Mockito 进行测试。
解决方案
我想测试是否调用
getLoginUpdateData()
将调用 loginDataInteractor 的 getLoginDate() 方法。
loginDataInteractor
是您展示的被测代码(剪切)的依赖项。
在UnitTest中,您只验证cut 的行为。您不验证依赖项的行为。他们有自己的单元测试。
推荐阅读
- apache-flink - 容器中的 TaskExecutorRunner JVM 重复,导致运行超出物理内存限制和 yarn kill
- authentication - 如何在 Spring Security 5 中进行未经身份验证的授权
- reactjs - Draftjs:“htmlConverter”类型的参数不可分配给“ContentState”类型的参数
- javascript - 无法读取属性“目标”
- java - 使用 findAll 在 webview android 中搜索单词
- c++ - 从控制台删除最后打印的元素
- ios - IOS SFSafariView清除会话
- swift - Swift Firebase 无法将值存储在字典中
- javascript - 如何在点击时将 jquery 测验结果转换为 pdf?
- java - Spring Boot 测试:如何只设置 1 次上下文?