2011-05-02 56 views
28

我必須爲使用MongoDB存儲的Java代碼開發一些Junit測試。有沒有允許我初始化模擬內存MongoDB服務器的框架/庫?配置並使用mongodb模型服務器進行單元測試

(這個想法是隻測試代碼本身,也就是說,在任何獨立運行的機器上,如果安裝了MongoDB,&正在運行)。

在此先感謝!

+0

你不只是使用本地的MongoDB安裝?它非常輕巧... 或..一個託管的芒果?例如mongohq.com? – Alex 2011-05-03 10:52:09

+4

這就是我現在正在做的(當地蒙戈)。問題在於它將在持續集成服務器中進行部署和測試,這意味着測試將定期在該機器上進行測試。 在這臺機器上部署MongoDB服務器不是一個選項(此外,如果單元測試使用託管服務或數據庫服務器等外部資源,它將不再是確定性的,因爲這些服務不受控制)。 – Ruben 2011-05-03 14:29:46

+3

對於那些建議連接到現有Mongo的人,我相信Ruben正在尋求類似於H2數據庫的使用方法。它可以「嵌入」到你的單元測試中。 – Damo 2012-03-08 02:45:38

回答

1

不是真的,你必須在應用程序層自己做那樣的事情。如果你使用Morphia,你可以使用任何你喜歡的服務層的模擬框架(因爲對象只是POJO),但是在db/driver層沒有任何東西可以幫助你。

許多人只是使用本地開發。帶有一組測試數據的mongodb實例,因爲它非常快。我知道爲每個測試加載測試數據的人,例如用假/測試數據複製數據庫。

0

作爲測試夾具設置的一部分,刪除數據庫並使用任何默認測試數據填充數據庫。

3

我們實際上正在研究這樣一個測試系統,這是非常可行的。在我們的方法我們的測試框架,擴展了標準的測試用例類(JUnit的在我們的例子,但TestNG的好像更強大),設置和使用以下步驟眼淚就下來了各種數據庫依賴條件與每個測試:

測試套件安裝

1)啓動的mongod過程(我們使用的ProcessBuilder,存儲進程實例)

測試設定:

2)運行蒙戈與測試特定js文件,以產生初始數據狀態

測試

3)運行測試

測試拆卸

4)刪除數據庫

測試套件拆卸

5)停止的mongod處理(process.destroy())

由於啓動和停止mongod是唯一耗時的事情,我強烈建議儘可能少做這件事。最好一次用於整個測試套件。我們的東西還沒有完成,但早期的結果是積極的。我不認爲有很多替代品可供選擇。在撰寫本文時,沒有mongo模擬庫,mongod沒有內存/嵌入模式。

+0

這是如何跨平臺? – wulfgarpro 2011-08-05 02:22:53

+0

除了開始該過程之外,上面沒有平臺特定的元素。測試機器通常沒有多個操作系統。 – 2011-08-05 11:41:52

+0

hm,我們的團隊使用win和* nix;我們將負責項目並在我們的個人機器上運行測試..您是否建議我們將mongo二進制文件打包到兩個平臺上? – wulfgarpro 2011-08-05 12:38:46

3

我在Java中編寫了一個MongoDB存根實現:mongo-java-server(請參閱this answer)。

+0

好東西。顯然它有一些限制,但是現在我可以用乾淨的數據庫運行我的Selenium測試。謝謝。 – 2016-05-07 16:08:38

相關問題