首頁  >  問答  >  主體

mysql - Java單元測試如何測試修改資料庫部分的程式碼?

對於各種資料庫的CRUD操作,都要寫對應的單元測試。對於尋找這樣並沒有太多的問題,但是對於增刪改的話這樣就會有問題,由於程式碼是在生產環境中運行,所以不能真的進行真的進行改動。

現在我想到的是方案是另外創建一個用於開發的資料與生產環境中的資料庫分開,但是這樣的話有些麻煩。 請問在企業真實的開發流程中對於要對資料庫修改的程式碼的單元測試一般都是怎麼做的?

簡單的看了一下mockito的介紹,好像沒有找到好的解決方案。大家能否給一下建議或是推薦這方面的資料。

註解:
在IBM社群中看到這樣一段對於單元測試的介紹:

單元測試要易於執行,單元測試的執行不應該需要配置等繁瑣操作就可以運行。如果單元測試程式碼包含存取資料庫、網路等,這個測試就不是真正的單元測試。

一種說法是單元測試是不允許連接真實的資料庫的,所以一切資料庫操作都要mock,那麼資料庫部分的程式碼到底該怎麼測試?

阿神阿神2687 天前585

全部回覆(3)我來回復

  • 伊谢尔伦

    伊谢尔伦2017-05-17 10:01:03

    可以使用h2完成單元檢定。一般企業級開發都有自己的測試環境的,直接連資料庫測試也沒太大的問題

    回覆
    0
  • 为情所困

    为情所困2017-05-17 10:01:03

    1. 你這個不是單元測試Unit Test,是整合測試Integration Test

    2. 不應該使用h2等記憶體資料庫,因為這些資料庫的語法、特性和你生產資料庫不同,很可能會導致測試失敗

    3. 如果你用Spring,參考Spring官方文檔中關於Integration Test章節

    回覆
    0
  • phpcn_u1582

    phpcn_u15822017-05-17 10:01:03

    用記憶體資料庫來解決這個問題。引入記憶體資料庫之後需要在程式碼中管理ddl腳本和必要的初始化資料dml腳本,
    每次跑單元測試時啟動記憶體資料庫,刷ddl和dml腳本,然後執行單元測試邏輯,推薦管理資料庫腳本工具有flyway和liquibase

    回覆
    0
  • 取消回覆