1. 验证SQL语法。 2. 更重要的是,根据给定情况检查数据是否被正确地选择/更新/插入。
虽然我需要一个DB,但实际上我更喜欢不使用DB进行测试,原因如下:
1. 在我的工作场所,要拥有一个个人测试DB几乎是不可能的,你必须使用“公共”DB,每个人都可以访问。 2. DB测试往往比通常的测试慢。拥有慢速测试并不理想。 3. 对于每个情况都尝试模拟和DB中一样的操作是繁琐且耗时的。 4. 使用DB时,测试通常与核心代码完全相同。
因此,我正在寻找一种模拟DB的方式,使用文件系统或虚拟内存。我认为可能有一个Java工具/包,允许我在每个测试中使用代码接口简单地构造一个DB模拟,带有模拟表和行、SQL验证以及用于监视其状态的代码接口。您了解这种工具吗?
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<MockColumn, Object> fields = new HashMap<MockColumn, Object>();
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查询非常简单,不应该在不同平台上有所不同。