mysql 单元测试_怎么做MYSQL代码的单元测试呢?有个好办法

解决数据库DAO单元测试难题,本文介绍了如何使用mariaDB4j在内存中启动数据库进行测试。通过配置DB、加载测试数据、执行单元测试并清理数据,使得SQL操作的验证变得简单易行。
摘要由CSDN通过智能技术生成

数据库相关单元测试代码怎么做?

对于一个重度耦合系统的数据库DAO部分的单元测试怎么来做呢?Mock? 很难吧,而且你怎么测试出这个SQL写的对还是不对。

下面介绍一个很好的jar,可以实现内存中启动数据库,这样单元测试就简单多了。

添加依赖

ch.vorburger.mariaDB4j

mariaDB4j

2.2.3

怎么使用呢?

配置DB

DBConfigurationBuilder configBuilder = DBConfigurationBuilder.newBuilder();

configBuilder.setPort(3306);

configBuilder.setDataDir("/home/theapp/db");

DB db = DB.newEmbeddedDB(configBuilder.build());

启动DB

db.start();

准备测试数据

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/test", "root", "");

db.source("path/to/resource.sql");

单元测试

@Test

public void testGetType() throws Exception {

//prepare data

Connection conn = null;

try {

conn = DriverManager.getConnection(getConfig().getURL(getDbName()), "root", "");

QueryRunner qr = new QueryRunner();

// Should be able to insert into a table

qr.update(conn, "INSERT INTO `test` (`id`, `type`,value) VALUES (NULL, 'haha', '300');");

} finally {

DbUtils.closeQuietly(conn);

}

//test

dao = (DaoImpl) SpringContextUtil.getBean("Dao");

Map typeValueMap = dao.getType();

String value = typeValueMap.get("haha");

Assert.assertEquals("300", value);

//delete data

try {

conn = DriverManager.getConnection(getConfig().getURL(getDbName()), "root", "");

QueryRunner qr = new QueryRunner();

// Should be able to insert into a table

qr.update(conn, "delete from `test` where type='haha'");

} finally {

DbUtils.closeQuietly(conn);

}

}

怎么样,是不是既简单有给力呢。

打开App,阅读手记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值