を起動していないが、私は次のようなエラーになっています行き方:Androidのテスト - Robolectric + Mockito +レトロフィットはたかったが、私のAndroidアプリで私のレトロフィット呼び出しをテストするためにRobolectricとMockitoを使用しようとするとエラー
Wanted but not invoked: mockApi.register( , ); -> at ServiceTest.testAPI(ServiceTest.java:58) Actually, there were zero interactions with this mock.
改造APIを次のように呼び出しがインタフェースで定義されて次のように
@FormUrlEncoded
@POST("/register")
void register(
@FieldMap Map<String, String> registrationParams,
Callback<JsonObject> response) ;
私のテストクラスは次のとおりです。
@Config(constants = BuildConfig.class)
@RunWith(TestRunner.class)
public class SharedServiceTest {
private RegistrationActivity activity;
@Mock
private SharedService mockApi;
@Captor
private ArgumentCaptor<Callback<JsonObject>> cb;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
ActivityController<RegistrationActivity> controller = Robolectric.buildActivity(RegistrationActivity.class);
activity = controller.get();
controller.create();
}
@Test
public void testAPI() throws Exception {
activity.populateFields();
activity.validateFields();
activity.register("");
Mockito.verify(mockApi).register(Mockito.anyMap(), cb.capture());
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("sessionToken", Mockito.anyString());
jsonObject.addProperty("userId", Mockito.anyString());
cb.getValue().success(jsonObject, null);
Assert.assertTrue(ShadowToast.getTextOfLatestToast().contains("Registration completed"));
}
}
public class TestMyApplication extends MyApplication
implements TestLifecycleApplication {
@Override
public void onCreate() {
super.onCreate();
}
@Override public void beforeTest(Method method) {
}
@Override public void prepareTest(Object test) {
}
@Override public void afterTest(Method method) {
}
@Override public CPSharedService getCPSharedService() {
return Mockito.mock(SharedService.class);
}
}
:
public void register(){
MyApplication.getInstance().getSharedService().register(mRegistrationParams, new Callback<JsonObject>() {
@Override
public void success(JsonObject jsonObject, retrofit.client.Response response) {
Toast.makeText(RegistrationActivity.this, "Registration completed", Toast.LENGTH_LONG).show();
}
@Override
public void failure(RetrofitError error) {
Toast.makeText(RegistrationActivity.this, RetrofitUtils.getErrorMessage(error), Toast.LENGTH_LONG).show();
}
});
}
本当のレトロフィットサービスは、私が使用するrobolectricのための私のテストフォルダに嘲笑している私自身のアプリケーションのクラスから来て次のようにAPIを使用して、私のRegistrationActivityにおける方法があります
私はこのエラーを持っているので、他の質問を検索しましたが、私がここでやろうとしているものと一致しないか、私の問題に解決策を提供していないので、