成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術(shù)文章
文章詳情頁

mysql - Java單元測試如何測試修改數(shù)據(jù)庫部分的代碼?

瀏覽:116日期:2023-12-16 09:17:14

問題描述

對于各種數(shù)據(jù)庫的CRUD操作,都要寫對應(yīng)的單元測試。對于查找這樣并沒有太多的問題,但是對于增刪改的話這樣就會有問題,由于代碼是在生產(chǎn)環(huán)境中運(yùn)行,所以不能真的進(jìn)行真的進(jìn)行改動。

現(xiàn)在我想到的是方案是另外創(chuàng)建一個用于開發(fā)的數(shù)據(jù)與生產(chǎn)環(huán)境中的數(shù)據(jù)庫分開,但是這樣的話有些麻煩。請問在企業(yè)真實(shí)的開發(fā)流程中對于要對數(shù)據(jù)庫修改的代碼的單元測試一般都是怎樣做的?

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

注釋:在IBM社區(qū)看到這樣一段對于單元測試的介紹:

單元測試要易于執(zhí)行,單元測試的執(zhí)行不應(yīng)該需要配置等繁瑣操作就可以運(yùn)行。如果單元測試代碼包含訪問數(shù)據(jù)庫、網(wǎng)絡(luò)等,這個測試就不是真正的單元測試。

一種說法是單元測試是不允許連接真實(shí)的數(shù)據(jù)庫的,所以一切數(shù)據(jù)庫操作都要mock,那么數(shù)據(jù)庫部分的代碼到底應(yīng)該怎么測試?

問題解答

回答1:

可以使用h2完成單元測試。一般企業(yè)級開發(fā)都有自己的測試環(huán)境的,直接連數(shù)據(jù)庫測試也沒太大的問題

回答2:

你這個不是單元測試Unit Test,是集成測試Integration Test

不應(yīng)該使用h2等內(nèi)存數(shù)據(jù)庫,因?yàn)檫@些數(shù)據(jù)庫的語法、特性和你生產(chǎn)數(shù)據(jù)庫不同,很可能會導(dǎo)致測試失敗

如果你用Spring,則參考Spring官方文檔中關(guān)于Integration Test章節(jié)

回答3:

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

標(biāo)簽: java
相關(guān)文章: