mock java 第二次报错_开发时java项目启动时需要连mysql等,有没有什么工具可以mock连接使得启动顺利不报错?...

如果是非单元测试

mock 一个数据库连接不难,实际上只要 mock 一个 DataSource 对象,然后根据项目实际初始化方式放进去就可以了,而这个对象实际连接到本地的任意数据库即可。下面的例子使用 mybatis 和 H2 数据库:

DataSource dataSource = new org.apache.ibatis.datasource.pooled.PooledDataSource(

"org.h2.Driver","jdbc:h2:mem:",null,null

);

上面的例子创建的是一个空的数据库,所以如果启动过程中有数据库操作,肯定会失败。因此要么把这些操作从初始化过程中移走,要么在 mock 数据库中创建同样的表等等,让初始化过程顺利完成。

如果是单元测试

在 Spring Boot 的单元测试中,可以用 @MockBean 来隔离很多东西,比如项目中用了一个 Jedis 对象,但是某个单元测试并不需要连接 Redis 服务,那么可以:

@SpringBootTest

@RunWith(SpringRunner.class)

public class ATest {

@MockBean

private Jedis jedis; // 1

@Test

public void test1() {

...

}

}

// 1 这里就是告诉 Spring Boot 创建一个模拟的 Jedis 对象,它不会连接任何服务,这样就省去了下面的麻烦:1) 在本地运行一个真正的 Redis 服务;2)离线开发时修改项目配置指向本地的 Redis 服务,集成测试时又要改回去。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值