2011-11-26 128 views
13

我想用make db連接測試類。我想測試的類作爲構造函數Connection類中的參數接受。我想將模擬對象傳遞給構造函數。你能告訴我一個很好的框架與示例如何模擬數據庫連接?Java模擬數據庫連接

+1

您可能對這篇資源感興趣:http://programmers.stackexchange.com/questions/118933/what-elements-of-my-junits-should-i-mock –

回答

10

您可以使用MockRunner,它支持JDBC。像Mockito這樣的通用模擬框架也可以工作,但JDBC是一組相互返回的接口,因此手工模擬將很困難。見自己:How to stub/mock JDBC ResultSet to work both with Java 5 and 6?

然而嘲諷JDBC是如此的脆弱和詳細(無論你使用何種工具),我會建議任何抽象有些單薄DAO層內的JDBC訪問(見@duffymo應答)或到 - 內存數據庫如H2

參見:

+0

http://mockrunner.github.io /在主持更新版本pvi的網站上說: –

3

連接是一個接口。任何模擬框架都能模擬它:EasyMock,Mockito,...

嘲笑它和嘲笑任何其他的Java接口沒有什麼不同。

1

你可以試試easymock。這是很容易使用,我認爲。 你可以找到一個參考教程。 easymock

3

我不會創建一個模擬連接 - 它證明什麼,在我看來。

我可以看到爲什麼在完全通過實時連接測試之後,你會嘲笑版本庫/ DAO本身。您將模擬存儲庫/ DAO提供給服務或其他客戶端,因爲您已經對其進行了測試 - 無需證明它在您執行集成測試之前就可以運行。

1

如果您打算在許多測試用例上重複使用該模擬,您還可以考慮實現自己的連接實現並在任何地方重用該實現。

3

您可以使用一個模擬框架,如上述答覆中提到的那些(我個人使用了EasyMock) OR創建你自己的模仿對象:

class FakeConnection extends Connection{ 
     // Overrive all method behavious you want to fake. 
} 
1

侍僧框架是這樣的目的有用 - >https://github.com/cchantep/acolyte

有了這個庫,你可以創建一個你爲其提供處理程序的連接實例。實現處理程序,您可以「調度」查詢或更新:生成結果集或更新計數(或警告)。