2012-11-18 4 views
10

Was ist der beste Weg, um Unit-Test einer Anwendung der Google Drive API (Java client) mit?Wie Einheit testet eine Anwendung mit Google Drive API (Java-Client)

Es scheint, wie geschriebene Anwendungen stützen sich stark auf die Drive Klasse, aber kurze entweder ...

  • eine wirklich umfangreiche Mock zu schaffen (was sich wahrscheinlich müssten getestet werden), oder
  • einen Integrationstest abhängig von der tatsächlichen Fahrdienst

... wie könnte eine solche Anwendung getestet werden zu schreiben?

Mit Mock Frameworks wie Mockito sind ein bisschen langweilig mit dem Drive API (Java-Client), da Nutzung des Client-Laufwerk Java verlassen sich auf so viele gekettet Anrufe (zB aus der Dokumentation):

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

Ich würde sagen, Sie sind besser in diesem Fall Integrationstests zu machen, da Sie nicht einfach die Bibliothek spotten können. – Hiro2k

Antwort

3

Es soll nicht so mühsam in Mockito in der Tat sein, mit Hilfe von tiefen Stub:

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(); 

mehr von documentation of Mockito Erfahren

Es ist in Ordnung, wenn Sie einen Integrationstest schreiben, um ihn mit dem tatsächlichen Drive-Service zu testen, aber er kann den Komponententest einfach nicht ersetzen.

+1

+1, wenn ich sehr glücklich in der Nacht schlafen will, würde ich Modul- und Integrationstests hat. –

+0

@AliAfshar wenn ich nachts sehr glücklich schlafen möchte, hätte ich eine heiße Frau bekommen (lol) –

+0

Kann immer noch nicht funktionieren, da ich 'ClassCastException (org.mockito.internal.creation.jmock.ClassImposterizer $ ClassWithSuperclassToWorkAroundCglibBug $$ EnhancerByMockitoWithCGLIB $$ 4603175d kann nicht auf java.lang.Void gegossen werden) '. Ich denke jedoch, dass Ihre Antwort tatsächlich korrekt ist, und der Fehler, den ich sehe, ist ein Fehler in Mockito. Vielen Dank! –