java如何做测试数据库_如何模拟用于测试的数据库(Java)?
我在Java編程,我的應用程序正在做很多使用DB。因此,重要的是我能夠輕松地測試我的數據庫使用。
什么是數據庫測試?對我來說,他們應該提供兩個簡單的要求:
>驗證SQL語法。
>更重要的是,根據給定的情況檢查數據是否被正確選擇/更新/插入。
那么,看來我需要的是一個DB。
但實際上,我不喜歡,因為使用DB進行測試有幾個困難:
>“只是給自己一個測試DB,它有多難? – 好吧,在我的工作地點,有一個個人測試DB是很不可能的。你必須使用一個“公共”數據庫,所有人都可以訪問。
>“這些測試肯定不是很快…” – DB測試往往比通常的測試慢。慢慢測試真的不理想。
>“這個程序應該處理任何情況! – 它變得有點惱人,甚至不可能嘗試和模擬每個案例在一個數據庫。對于每種情況,應該進行一定量的插入/更新查詢,這是煩人的,需要時間。
>“等一下,你怎么知道那個表中有542行?” – 測試的主要原則之一是能夠以不同于測試代碼的方式測試功能。當使用DB時,通常有一種方法來做某事,因此測試與核心代碼完全相同。
所以,你可以弄清楚,我不喜歡DBs,當談到測試(當然,我必須得到這一點,但我寧愿到那里我的測試,后我發現大多數錯誤使用其余的測試方法)。但我正在尋找什么?
我正在尋找一種方法來模擬一個數據庫,一個模擬DB,使用文件系統或只是虛擬內存。我認為也許有一個Java工具/包允許簡單地構建(使用代碼接口)DB模擬每個測試,模擬表和行,SQL驗證,并與代碼接口監視其狀態(而不是使用SQL )。
你熟悉這種工具嗎?
編輯:感謝您的答案!雖然我要求一個工具,你也提供了一些提示,關于這個問題:)它將需要我一些時間檢查你的優惠,所以我不能說現在是否你的答案是不滿意。
無論如何,這里是一個更好的看法我正在尋找 – 想象一個名為DBMonitor的類,其功能之一是找到表中的行數。這里是一個虛構的代碼,我如何使用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;
}
我希望這段代碼足夠清楚我的想法(對不起語法錯誤,我是手動輸入沒有我親愛的Eclipse:P)。
順便說一句,我使用ORM部分,我的原始SQL查詢是相當簡單,不應該從一個平臺到另一個不同。
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的java如何做测试数据库_如何模拟用于测试的数据库(Java)?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java real football_J
- 下一篇: java多线程共享信息_java多线程信