java如何做测试数据库_如何模拟用于测试的数据库(Java)?
我在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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java real football_J
- 下一篇: java多线程共享信息_java多线程信