2014-03-28 75 views
0

我正在尋找事務支持來回滾變化,同時測試我的應用程序在Spring + RESt + Mongo 2.4中編寫。但它不可能,因爲我們不能使用mongodb事務。在搜索集成測試時,我發現幾個關於embedMongo的鏈接用於集成測試。你也可以通過在某處運行專用的mongo db實例來進行集成測試。嵌入mongo提供了什麼特殊功能?我沒有找到很好的文檔,它是否在Apache許可證下?EmbedMongo進行集成測試

回答

1

我正在尋找事務支持來回滾變化,同時測試我寫的應用程序在Spring + RESt + Mongo 2.4中編寫。但它不可能,因爲我們不能使用mongodb事務。

不支持事務,但你有回滾的變化,而測試的幾個替代方法:在單元測試中根據需要在建立或拆除

  • 創建/復位數據
  • 種子的初始數據集和您的測試所以沒有新的數據寫入到磁盤中開始mongod--syncdelay=0(嵌入式的MongoDB表明這是一個"snapshot"方法)

在搜索集成測試時,我發現很少有關於進行集成測試的embedMongo鏈接。你也可以通過在某處運行專用的mongo db實例來進行集成測試。嵌入mongo提供了什麼特殊功能?

Embedded MongoDB是一個包裝標準的MongoDB服務器二進制文件,旨在幫助進行單元測試。包裝的「特殊功能」只是通過單元測試來啓動/停止MongoDB實例的函數。

另請參閱評論:Embedded MongoDB when running integration tests

我沒有找到很好的文檔,它是否在Apache許可證下?

"Embedded MongoDB" GitHub上的源文件提示Apache 2.0許可證。

MongoDB服務器二進制文件將使用standard MongoDB Server community license,這是AGPL v3.0。

+0

是否嵌入Mongo數據庫支持Mongo數據庫2.4版本?此外,我還發現NoSQL Unit是單元測試工具之一。您是否知道嵌入Mongo可以很好地工作? – Milind

+0

@Milind:如前所述,嵌入式MongoDB只是標準二進制文件的一個包裝,因此應該可以輕鬆適用於任何版本的MongoDB。看看Github,[Version.java](https://github.com/flapdoodle-oss/de.flapdoodle.embed.mongo/blob/master/src/main/java/de/flapdoodle/embed/mongo/distribution/ Version.java)已經通過2.5.4開發版本進行了更新。 – Stennie