Java 如何防止一个方法在测试中调用另一个方法? public void makeLoginRequest(){ log(sessionHandler.getEncodedCredentials()); 调用loginCall=apiService.getLoginInfo(“application/json”,“application/json” ,“SPT”,“Android”,sessionHandler.getEncodedCredentials()); loginCall.enqueue(新回调(){ @凌驾 公共void onResponse(调用、响应){ handleLoginResponse(响应); } @凌驾 失败时公共无效(调用调用,可丢弃的t){ 手语失败(t); } }); }

Java 如何防止一个方法在测试中调用另一个方法? public void makeLoginRequest(){ log(sessionHandler.getEncodedCredentials()); 调用loginCall=apiService.getLoginInfo(“application/json”,“application/json” ,“SPT”,“Android”,sessionHandler.getEncodedCredentials()); loginCall.enqueue(新回调(){ @凌驾 公共void onResponse(调用、响应){ handleLoginResponse(响应); } @凌驾 失败时公共无效(调用调用,可丢弃的t){ 手语失败(t); } }); },java,android,junit,mockito,robolectric,Java,Android,Junit,Mockito,Robolectric,我试图用JUnit和Mockito测试这个方法。此方法属于presenter类。为了测试这一点,我运行 presenter.makeLoginRequest()然后当调用onResponse时 我使用verify(演示者)。handleLoginResponse(响应)从未被调用。问题是它将继续在handleLoginResponse(响应)中运行所有内容。我不想执行此方法中的内容,但只需要验证是否调用了此方法。 我怎样才能忽略方法执行,或者什么是最好的测试方法?有两种方法: 使您的演示者成为模

我试图用JUnit和Mockito测试这个方法。此方法属于presenter类。为了测试这一点,我运行
presenter.makeLoginRequest()然后当调用onResponse时
我使用
verify(演示者)。handleLoginResponse(响应)从未被调用。问题是它将继续在
handleLoginResponse(响应)中运行所有内容。我不想执行此方法中的内容,但只需要验证是否调用了此方法。

我怎样才能忽略方法执行,或者什么是最好的测试方法?

有两种方法:

  • 使您的演示者成为模拟对象

  • 有两种方法可以做到这一点:

  • 使您的演示者成为模拟对象

  • 谢谢你的回答。我模拟了presenter类,但这导致无法调用
    handleLoginResponse(response)
    。当我监视presenter类时,它会起作用,尽管
    doNothing
    被忽略,并且该方法仍在执行:(其全部目的不是为了测试不调用
    handleLoginResponse
    ?即使模拟presenter类,
    verify(presenter)。handleLoginResponse(响应)
    仍然可以验证它是否有效!我只是忘了在验证中添加
    any()
    。谢谢你,巴赫!:)很高兴它有帮助:)谢谢你的回答。我模拟了presenter类,但这导致无法调用
    handleLoginResponse(response)
    。当我监视presenter类时,它会起作用,尽管
    doNothing
    被忽略,并且该方法仍在执行:(其全部目的不是为了测试不调用
    handleLoginResponse
    ?即使模拟presenter类,
    verify(presenter)。handleLoginResponse(响应)
    仍然可以验证它是否有效!我只是忘了在验证中添加
    any()
    。谢谢你,巴赫!:)很高兴它有帮助:)
    public void makeLoginRequest(){
        view.log(sessionHandler.getEncodedCredentials());
        Call loginCall = apiService.getLoginInfo("application/json", "application/json"
                , "SPT", "Android", sessionHandler.getEncodedCredentials());
    
       loginCall.enqueue(new Callback<User>() {
            @Override
            public void onResponse(Call<User> call, Response<User> response) {
                handleLoginResponse(response);
            }
    
            @Override
            public void onFailure(Call<User> call, Throwable t) {
                handleLoginFailure(t);
            }
        });
    }
    
    presenter = mock<Presenter>()
    
    doNothing().when(presenter).handleLoginResponse(any());