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);
}
}

浙公网安备 33010602011771号