首页 > 解决方案 > 测试是否使用 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 进行测试。

标签: javaandroidmockitojunit4

解决方案


我想测试是否调用

 getLoginUpdateData()

将调用 loginDataInteractor 的 getLoginDate() 方法。

loginDataInteractor是您展示的被测代码(剪切)的依赖项。

UnitTest中,您只验证cut 的行为。您验证依赖项的行为。他们有自己的单元测试。


推荐阅读