Java Unit Test - HSQLDB模拟数据库

1. 模拟数据库

package mockito.db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class MemoryDB {
private String url;
private String user;
private String password;

public MemoryDB(String url, String user, String password) {
this.url = url;
this.user = user;
this.password = password;
}

public static MemoryDB getInstance() {
MemoryDB memoryDB = new MemoryDB("jdbc:hsqldb:mem:sqldb", "root", "");
return memoryDB;
}

public Connection getConnection() throws SQLException {
Connection connection = DriverManager.getConnection(this.url, this.user, this.password);
return connection;
}

public static void main(String[] args) throws SQLException {
MemoryDB memoryDB = MemoryDB.getInstance();
memoryDB.getConnection();
}

public String getUrl() {
return url;
}

public void setUrl(String url) {
this.url = url;
}

public String getUser() {
return user;
}

public void setUser(String user) {
this.user = user;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}
}

package mockito.db;

import java.util.Arrays;
import java.util.List;

public class TableData {

public static final List<String> TABLE_CREATE_LIST = Arrays.asList("create table mockTest (" +
"id integer primary key ," +
"name varchar(256)" +
");");
}


2. 操作数据库
package mockito.db;

import org.junit.Before;
import org.junit.Test;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import static org.junit.Assert.assertEquals;

public class DBMock {

private Connection connection;

@Before
public void start() throws SQLException {
connection = MemoryDB.getInstance().getConnection();
PreparedStatement preparedStatement = connection.prepareStatement(TableData.TABLE_CREATE_LIST.get(0));
preparedStatement.execute();
}

@Test
public void testDB() throws SQLException {
String insertSql = "insert into mockTest values (1, 'test')";
int updateCount = this.connection.prepareStatement(insertSql).executeUpdate();

assertEquals(1, updateCount);
}
}
posted @ 2020-09-06 22:07  想开挖掘机的程序员  阅读(264)  评论(0)    收藏  举报