5 回答

TA貢獻1859條經(jīng)驗 獲得超6個贊
你這個不是單元測試Unit Test,是集成測試Integration Test
不應該使用h2等內(nèi)存數(shù)據(jù)庫,因為這些數(shù)據(jù)庫的語法、特性和你生產(chǎn)數(shù)據(jù)庫不同,很可能會導致測試失敗
如果你用Spring,則參考Spring官方文檔中關(guān)于Integration Test章節(jié)

TA貢獻1848條經(jīng)驗 獲得超2個贊
用內(nèi)存數(shù)據(jù)庫來解決該問題。引入內(nèi)存數(shù)據(jù)庫之后需要在代碼中管理ddl腳本和必要的初始化數(shù)據(jù)dml腳本,
每次跑單元測試時啟動內(nèi)存數(shù)據(jù)庫,刷ddl和dml腳本,然后執(zhí)行單元測試邏輯,推薦管理數(shù)據(jù)庫腳本工具有flyway和liquibase

TA貢獻1853條經(jīng)驗 獲得超6個贊
對于數(shù)據(jù)庫層的測試屬于acceptance tedt,之所以不能再寫單元測試是因為數(shù)據(jù)庫層的操作已經(jīng)是最底層了。沒有什么可以mock的了。

TA貢獻1816條經(jīng)驗 獲得超6個贊
spring Junit 測試可以在測試類上面注解@TransactionConfiguration(transactionManager="transactionManager", defaultRollback=true)
這樣就能跑并且跑完以后,數(shù)據(jù)庫是不會變化的,因為跑完了數(shù)據(jù)就會回滾
添加回答
舉報