日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

java如何做测试数据库_如何模拟用于测试的数据库(Java)?

發(fā)布時(shí)間:2025/4/16 java 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java如何做测试数据库_如何模拟用于测试的数据库(Java)? 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

我在Java編程,我的應(yīng)用程序正在做很多使用DB。因此,重要的是我能夠輕松地測試我的數(shù)據(jù)庫使用。

什么是數(shù)據(jù)庫測試?對我來說,他們應(yīng)該提供兩個(gè)簡單的要求:

>驗(yàn)證SQL語法。

>更重要的是,根據(jù)給定的情況檢查數(shù)據(jù)是否被正確選擇/更新/插入。

那么,看來我需要的是一個(gè)DB。

但實(shí)際上,我不喜歡,因?yàn)槭褂肈B進(jìn)行測試有幾個(gè)困難:

>“只是給自己一個(gè)測試DB,它有多難? – 好吧,在我的工作地點(diǎn),有一個(gè)個(gè)人測試DB是很不可能的。你必須使用一個(gè)“公共”數(shù)據(jù)庫,所有人都可以訪問。

>“這些測試肯定不是很快…” – DB測試往往比通常的測試慢。慢慢測試真的不理想。

>“這個(gè)程序應(yīng)該處理任何情況! – 它變得有點(diǎn)惱人,甚至不可能嘗試和模擬每個(gè)案例在一個(gè)數(shù)據(jù)庫。對于每種情況,應(yīng)該進(jìn)行一定量的插入/更新查詢,這是煩人的,需要時(shí)間。

>“等一下,你怎么知道那個(gè)表中有542行?” – 測試的主要原則之一是能夠以不同于測試代碼的方式測試功能。當(dāng)使用DB時(shí),通常有一種方法來做某事,因此測試與核心代碼完全相同。

所以,你可以弄清楚,我不喜歡DBs,當(dāng)談到測試(當(dāng)然,我必須得到這一點(diǎn),但我寧愿到那里我的測試,后我發(fā)現(xiàn)大多數(shù)錯(cuò)誤使用其余的測試方法)。但我正在尋找什么?

我正在尋找一種方法來模擬一個(gè)數(shù)據(jù)庫,一個(gè)模擬DB,使用文件系統(tǒng)或只是虛擬內(nèi)存。我認(rèn)為也許有一個(gè)Java工具/包允許簡單地構(gòu)建(使用代碼接口)DB模擬每個(gè)測試,模擬表和行,SQL驗(yàn)證,并與代碼接口監(jiān)視其狀態(tài)(而不是使用SQL )。

你熟悉這種工具嗎?

編輯:感謝您的答案!雖然我要求一個(gè)工具,你也提供了一些提示,關(guān)于這個(gè)問題:)它將需要我一些時(shí)間檢查你的優(yōu)惠,所以我不能說現(xiàn)在是否你的答案是不滿意。

無論如何,這里是一個(gè)更好的看法我正在尋找 – 想象一個(gè)名為DBMonitor的類,其功能之一是找到表中的行數(shù)。這里是一個(gè)虛構(gòu)的代碼,我如何使用JUnit測試該功能:

public class TestDBMonitor extends TestCase {

@Override

public void setUp() throws Exception {

MockConnection connection = new MockConnection();

this.tableName = "table1";

MockTable table = new MockTable(tableName);

String columnName = "column1";

ColumnType columnType = ColumnType.NUMBER;

int columnSize = 50;

MockColumn column = new MockColumn(columnName, columnType, columnSize);

table.addColumn(column);

for (int i = 0; i < 20; i++) {

HashMap fields = new HashMap();

fields.put(column, i);

table.addRow(fields);

}

this.connection = connection;

}

@Test

public void testGatherStatistics() throws Exception {

DBMonitor monitor = new DBMonitor(connection);

monitor.gatherStatistics();

assertEquals(((MockConnection) connection).getNumberOfRows(tableName),

monitor.getNumberOfRows(tableName));

}

String tableName;

Connection connection;

}

我希望這段代碼足夠清楚我的想法(對不起語法錯(cuò)誤,我是手動輸入沒有我親愛的Eclipse:P)。

順便說一句,我使用ORM部分,我的原始SQL查詢是相當(dāng)簡單,不應(yīng)該從一個(gè)平臺到另一個(gè)不同。

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的java如何做测试数据库_如何模拟用于测试的数据库(Java)?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。