如何在Springboot中利用Mybatis-Plus实现一个单元测试功能

  介绍

这篇文章给大家介绍如何在Springboot中利用Mybatis-Plus实现一个单元测试功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

? ?单元测试长久以来是热门话题,本文不会讨论需不需要写单测,可以看看参考<强>资料1 ,我个人认为写好单测应该是每个优秀开发者必备的技能,关于写单测的好处在这里我就不展开讨论了,快速进入本文着重讨论的话题,如何写好数据库单测。

? ? <强>为什么要写数据库单测吗?强相信大家是不是有这样类似的经历,在写完复杂的sql语句后,自信满满的提测,发现很大一部分错误都是因为sql语句出现问题了,要么少写逗号,要么漏了字段,悔不当初哇,为啥写完不多测测呢!

? ?没关系!这就教你如何写数据库单测,让你轻松告别数据库相关虫。

1。数据库样例和环境

? ?我们以用户表为例开启本次教程:

如何在Springboot中利用Mybatis-Plus实现一个单元测试功能

1.1图用户表ER图

? ?引入mybatis-plus插件后,mapper类如下:

@Mapper   public  interface  UserMapper  extends  BaseMapper< UserDO>, {   }

? ?整体环境:

<李>

弹簧引导:1.5.18。李发布

<李>

mybatis: 3.5.1

<李>

mybatis +: <强> 3.4.0(此时最新版本,我们会用到最新版本的特性)

? ?在这里我们直接测试的是mybatis +提供的一些CRUD,当然这些CRUD一般都不会错,实际项目中我们只需对自定义的SQL进行单元测试即可。

2。方式一:启动整个环境

? ? <强>这种方式应该是日常环境使用最多的强,利用SpringBoot自1.4.0版本开始引入的@SpringBootTest注解可以启动我们单元测试所需要的所有环境,当然,如果你项目中运用了其他分布式服务,他同样也会启动这些服务。单测代码如下:

@RunWith (SpringRunner.class)   @SpringBootTest   public  class  UserMapperTest  {      @ autowired才能   private 才能;UserMapper  usermap;      @Test才能   public 才能;void  testCurd (), {   ,,,UserDO  UserDO =, new  UserDO ();   ,,,userDO.setId (7777 l);   ,,,userDO.setGmtModified (new 日期());   ,,,userDO.setGmtCreate (new 日期());   ,,,userDO.setRealName (“ke");   ,,,userDO.setUserName (“ni");   ,,,userMapper.insert (userDO);      ,,,UserDO  select =, userMapper.selectById (1);   ,,,System.out.println(选择);   ,,}   }

@SpringBootTest注解可以设置需要启动加载的类,按需加载

3。方式二:只启动数据库环境+远程数据库

? ?在参考资料2中,最新的mybatis-plus发布版本(3.4.0)中引入了测试起动器,如图:

如何在Springboot中利用mybatis-plus实现一个单元测试功能

3.1图Mybatis-plus3.4.0引入测试模块

? ?模块引入了新的注解<代码> @MybatisPlusTest> @RunWith (SpringRunner.class)   @MybatisPlusTest   @AutoConfigureTestDatabase (replace =, AutoConfigureTestDatabase.Replace.NONE)   public  class  UserMapperTest  {      @ autowired才能   private 才能;UserMapper  usermap;         @Test才能   public 才能;void  testCurd (), {   ,,,UserDO  UserDO =, new  UserDO ();   ,,,userDO.setId (7777 l);   ,,,userDO.setGmtModified (new 日期());   ,,,userDO.setGmtCreate (new 日期());   ,,,userDO.setRealName (“ke");   ,,,userDO.setUserName (“ni");   ,,,userMapper.insert (userDO);      ,,,UserDO  select =, userMapper.selectById (1);   ,,,System.out.println(选择);   ,,}   }

? ?是不是很轻松?不过我们要注意如下几点关键点:

<李>

<代码> @AutoConfigureTestDatabase(取代=AutoConfigureTestDatabase.Replace.NONE) 的作用是使用自定义的数据源,而非使用自动配置的嵌入式内存数据源

<李>

如果你在项目正在使用类似于德鲁伊的连接池,在测试模块的时候需要在应用程序配置文件里面直接使用jdbc数据源即可,因为<代码> @MybatisPlusTest

如何在Springboot中利用Mybatis-Plus实现一个单元测试功能