Java 與'嵌入式' PostgreSQL 數據庫的單元測試

在我們對數據庫 DAO 類進行單元測試時,通常不應該依賴於一個外部數據庫,所以會選用特定比較接近於真實數據庫類型的內存或嵌入式數據庫,如 HSQLDB(HyperSQL), H2, Derby 等。但總難免會用到特定數據庫的特性,這時候就無法用前述各種數據庫進行測試了。非要單元測試中覆蓋到所用的數據庫特性的話可以選擇用 docker,如 Testcontainers, 經過模塊擴展,它可以由 docker 來啓動許多種類型的數據庫,MySQL, Postgres, Oracle-XE, MS SQL Server, Couchbase 等等,詳情見 Database containers。剛瞭解到的是它的模塊化的無限可能,像支持 Kafka Containers 和 Localstack Module 等。

這裏就不走 Testcontainers 那條路 -- 要求構建服務器上也要有 docker。早先希望能找到一種嵌入式或內存 PostgreSQL 數據庫,後來發現 PostgreSQL 未能提供 In-Process 和 In-Memory 的啓動方式,好在 PostgreSQL 是開源,有人可以把它改造爲小型的可由測試代碼啓停的本地數據庫。有兩個具有代表性的組件,分別是 OpenTable Embedded PostgreSQL Component 和 Embedded PostgreSQL Server,它們都號稱是 Embedded,所謂嵌入式,其實是進測試進程外的數據庫。

下面簡單體驗下兩個組件的用法 閱讀全文 >>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章