2010-10-04 119 views
5

我需要使用Java在Mongo數據庫上進行幾次集成測試,並且我正在尋找一種類似DbUnit的解決方案(DbUnit適用於Hibernate),它可以使用自定義數據填充我的數據庫,並在每次運行後重置狀態。與MongoDB集成測試?

任何提示?

感謝

+0

回答詳細介紹下這個問題http://stackoverflow.com/questions/6437226/embedded-mongodb-when-running-integration-tests – KPrince36 2015-12-11 15:47:34

回答

3

要開始了,我不知道任何直接等同於DBUnit的爲蒙戈的。 Mongo仍然是一款新產品,所以你可能需要爲這些東西「推出自己的產品」。

不過,也有蒙戈的幾個特點,應該讓這個簡單:

  1. 它運行以最小權限
  2. 它可以簡單地編制文件「運行」
  3. 它並沒有真正有一個模式(除了索引)
  4. 它可以工作的JSON數據

根據您的數據集有很多方法 去做這個。但基本工具在那裏。

  • 您應該能夠從您的測試中爲您的測試專門啓動一個版本。
  • 您應該能夠從JSON文件導入「狀態」數據。
  • 您應該能夠從一個JS文件(從零開始)申請任何服務器端功能。

所以整個事情應該是非常簡單的。雖然你將不得不寫很多膠水代碼。

+2

不要忘了,你可以使用Java的File.createTempFile(使用file.deleteOnExit)來輕鬆地測試mongo數據庫存儲。 – Steven 2010-10-05 03:32:55

2

這裏是我做的:連接到已知(通常共享)蒙戈實例,但創建使用UUID每個測試運行新的獨特的數據庫。您不必擔心創建集合,因爲它們是在第一次將文檔存儲在其中時懶惰地創建的。在存儲庫或DAO的構造函數中創建所需的任何索引;如果索引已經存在,mongo索引創建立即成功,不做任何工作。顯然,你不需要擔心模式遷移;-)

這個方案要求你從一個空的數據存儲開始,但它是一個已知的狀態,所以它很容易填充到你的測試的設置階段如果需要的話。

測試完成後,在拆卸階段刪除整個數據庫。

0

我知道這個問題是舊的,但也許我的答案將是有用的人。 下面是一個簡單util的,我最近寫的:https://github.com/kirilldev/mongomery

很簡單填充數據庫從JSON文件中的數據:

//db here is a com.mongodb.DB instance 
MongoDBTester mongoDBTester = new MongoDBTester(db); 
mongoDBTester.setDBState("predefinedTestData.json"); 

要檢查DB狀態:

mongoDBTester.assertDBStateEquals("expectedTestData.json"); 

它支持佔位符對於在某些情況下可能有用的預期文件。