2016-09-15 86 views
8

雖然其他接口在我的Java集成測試中相對容易模擬,但我無法找到嘲弄Bigquery的正確方法。嘲笑集成測試的Bigquery

一種可能性是模擬我在Bigquery本身上編寫的圖層,但我更喜歡以更自然的方式嘲笑Bigquery。我正在尋找一個有限的輕量級實現,它允許定義表格內容,並支持使用標準API進行查詢。 有這樣的圖書館嗎?如果不是,建議採用哪些替代方法?

回答

4

在單元測試中,嘲笑所有外部依賴是完全正常的,並且只要您使用接口來抽象化訪問BigQuery客戶端,嘲笑就不應該成爲問題。

通過集成測試,我寧願讓我所有的第三方依賴測試 擴展到應用程序需要它。

例如,一種情況是ETL將來自外部源的數據流式傳輸到BigQuery,在這種情況下,集成測試需要驗證所有數據是否如預期般處於BigQuery中,這意味着驗證階段需要考慮重複,並根據需要嵌套消息。

另一種情況是運行一些業務SQL的應用程序,在這種情況下,您將在運行應用程序之前用一些測試數據填充BigQuery,然後應用程序需要將SQL輸出發佈爲視圖/新表格/或流沒有數據用於驗證。

目前已經有一些圖書館照顧集成測試與數據存儲,包括大量查詢/ NoSQL的/ SQL

他們將提供上面的SQL和全力支持中描述的情況下,一個簡單的解決方案,動態宏/謂語等。 ..

  1. Dsunit(去琅)
  2. JDsunit(JAVA)

如果數據存儲集成測試庫不適合您,並且您只是在測試BigQuery客戶端,好消息是客戶端使用REST,因此使用網絡嗅探器可以輕鬆記錄來回發送的內容,然後您可以在播放器中使用它。爲了將BigQuery從 公共BG端點重定向到您的播放器,您可以使用http java代理。

+0

我需要爲JDSUnit安裝go-lang嗎?另外介紹說,我們需要安裝DSUnit服務器,那是什麼? – user1965449

+0

您需要安裝golang,jdsunit只是dsunit服務器的簡單休息客戶端,它實際上負責數據準備和驗證 –

+0

對不起,當我安裝golang時,會不會自動安裝dsunit服務器?哪個組件與BigQuery進行通信,它是jdsunit客戶端還是dsunit服務器?請澄清。謝謝。 – user1965449