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); } }); }
我试图用JUnit和Mockito测试这个方法。此方法属于presenter类。为了测试这一点,我运行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(响应)中运行所有内容。我不想执行此方法中的内容,但只需要验证是否调用了此方法。 我怎样才能忽略方法执行,或者什么是最好的测试方法?有两种方法: 使您的演示者成为模
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());