我试图为android中的改造2回调创建最完整的案例。我用于测试mockito,MockWebServer和MockResponse。
readv
我最潇洒的课程:
public class LoginFragment extends Fragment {
/**
* Actualiza el numero telefonico para el usuario
*
* @param phoneNumber
*/
public void phoneNumber(String phoneNumber) {
HttpService service = Service.createService(HttpService.class, TOKEN);
Call<Void> call = service.phonumber(phoneNumber, new User("", ""));
call.enqueue(callback());
}
/**
* @return Callback<Void>
*/
public Callback<Void> callback() {
return new Callback<Void>() {
@Override
public void onResponse(Call<Void> call, Response<Void> response) {
if (response.isSuccessful()) {
dummy();
} else {
Log.e(TAG, "problema");
}
}
@Override
public void onFailure(Call<Void> call, Throwable t) {
Log.e(TAG, " " + t);
}
};
}
public void dummy(){
System.out.println(" called");
}
}
但是当你进行测试时我得到了:
@RunWith(MockitoJUnitRunner.class)
public class TestLoginFragment {
MockWebServer mockWebServer;
@Before
public void setup() throws Exception {
spyLoginFragment = mock(LoginFragment.class);
mockWebServer = new MockWebServer();
}
@Test
public void testDummyIsCalled() {
spyLoginFragment.phoneNumber("3333335");
mockWebServer.enqueue(new MockResponse().setResponseCode(201));
verify(spyLoginFragment, times(1)).dummy();
}
}
我正在进行新的回调测试,如何验证是否已调用TestLoginFragment > testDummyIsCalled FAILED
Wanted but not invoked:
loginFragment.dummy();
?
答案 0 :(得分:0)
根据定义,单元测试仅测试单元本身的功能。因此,它可能无法捕获集成错误。
您不应该测试改造框架或其回调,您必须假设改造始终有效。仅测试您的代码,因此为phoneNumber(String phoneNumber)创建一个测试,检查服务是否配置正确(不需要启动改造服务),并创建其他测试以检查OnSuccess或OnFailure案例中服务器的可信响应。
PD:如果你想测试Retrofit调用和回调方法之间的耦合,那你就是在讨论“集成测试”。