2012-11-18 26 views
10

使用Google Drive API (Java client)單元測試應用程序的最佳方式是什麼?如何使用Google Drive API(Java客戶端)對應用程序進行單元測試

好像寫的應用程序嚴重依賴Drive類,但短期的要麼...

  • 創建一個真正廣泛的模擬(其本身可能會需要 進行測試),或
  • 寫一個集成測試依賴於實際的驅動服務

...怎麼會這樣的應用程序進行測試?

使用像Mockito模擬框架與驅動API(Java客戶端)有點乏味,因爲驅動的Java客戶端的使用依賴於使這麼多的鏈式調用(例如,從文檔):

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

我想說你最好在這種情況下進行集成測試,因爲你不能輕易地模擬庫。 – Hiro2k

回答

3

它不應該是單調乏味的Mockito中事實上,深存根的幫助:

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

瞭解更多從documentation of Mockito

如果您編寫集成測試以對照實際的Drive服務進行測試,那很好,但它不能代替單元測試。

+1

+1,如果我想在晚上睡得很開心,我會進行單元和集成測試。 –

+0

@AliAfshar如果我想晚上睡得很開心,我會得到一個熱門的妻子(笑) –

+0

仍然不能得到這個工作,因爲我得到'ClassCastException(org.mockito.internal.creation.jmock.ClassImposterizer $ ClassWithSuperclassToWorkAroundCglibBug $$ EnhancerByMockitoWithCGLIB $$ 4603175d不能轉換爲java.lang.Void)''。不過,我認爲你的回答實際上是正確的,我看到的錯誤是Mockito中的一個錯誤。謝謝! –

相關問題