2012-11-18 5 views
10

Jaki jest najlepszy sposób testowania aplikacji przy użyciu urządzenia Google Drive API (Java client)?Jak testować aplikację za pomocą interfejsu Google Drive API (klient Java)?

Wydaje się, że aplikacje napisane w dużym stopniu od klasy Drive, ale brakuje albo ...

  • tworząc bardzo rozległe makiety (która sama w sobie, to prawdopodobnie trzeba być testowane) lub
  • pisanie testu integracji w zależności od rzeczywistej usługi Drive

... w jaki sposób można testować taki wniosek?

Korzystanie mock ramy jak Mockito są nieco nużące z API Dysku (klient Java), ponieważ korzystanie z klientem Napęd Java polegać na podejmowaniu tylu łańcuchu połączeń (np z dokumentacją):

Drive service = getDriveService(req, resp); 
service.files().get(fileId).execute(); 
+0

Powiedziałbym, że w tym przypadku lepiej jest wykonywać testy integracyjne, ponieważ nie można łatwo kpić z biblioteki. – Hiro2k

Odpowiedz

3

To nie powinno być uciążliwe w Mockito w rzeczywistości, za pomocą głębokiej odgałęzienie:

Drive mockDrive = mock(Drive.class, RETURNS_DEEP_STUBS); 

.... 
// stubbing 
when(service.files().get(anyString()).execute()).thenReturn(something); 

// verify 
verify(service.files().get("Some Field ID").execute(); 

dowiedzieć się więcej od documentation of Mockito

To jest w porządku, jeśli piszesz test integracji, aby przetestować rzeczywistą usługę Drive, ale po prostu nie można zastąpić testów jednostkowych.

+1

+1 jeśli chciałem spać bardzo szczęśliwie w nocy, miałbym testy jednostkowe i integracyjne. –

+0

@AliAfshar jeśli chcę spać bardzo szczęśliwie w nocy, dostałbym gorącą żonę (lol) –

+0

Nadal nie mogę tego zrobić, ponieważ dostaję 'ClassCastException (org.mockito.internal.creation.jmock.ClassImposterizer $ ClassWithSuperclassToWorkAroundCglibBug $$ EnhancerByMockitoWithCGLIB $$ 4603175d nie można przesłać do java.lang.Void) '. Jednak myślę, że twoja odpowiedź jest poprawna, a błąd, który widzę, jest błędem w Mockito. Dzięki! –