目前大多数项目已经实现了前后端分离。作为后端开发,在开发完成后很有必要进行接口的自测。目前主流的postman,现在还有新出来postwoman,实际上idea也有支持HTTP测试。
平时一般都是用上面的工具自测也就够了,但是他们都是基于接口层面的http请求测试!对于单元测试,他们都不能很好的实现,还是springboot的单元测试最合适的。
今天就来搭建一下spring boot的单元测试,再来感受他们各自的优点。
1、添加依赖
2、创建父类
在项目里有可能会出现下面的情况,也就是idea并没有把test文件夹下面的文件当成源文件,解决步骤也简单。两步搞定:
a、首先在File下的Project Strncture 如下图。
b、然后如下图,在modules中选中对应的项目,然后选择右边test下面的Java文件夹,单击上面的Test,就完成了。这个不仅能解决test,其他的也可以。比如新建一个源文件,如果不能识别,那么也可以这样操作。
最后在test源文件下面创建测试的父类,这个类作为父类,可以在类的注解上加一些通用的注解,比如@RunWith、@SpringBootTest。这样作为其他测试类只用继承这个类就行了。而且可以在父类里面做一些统一的配置之类的。
3、创建具体测试类
具体的测试类,继承至上面的父类,然后在具体的测试方法上面加上@Test,就可以实现测试了!利用断言Assert进行测试。
4、总测试类
spring boot有一个我觉得最好的功能,需要单独拉出来说一下,那就是全测试。只需要在类上加上@Suite注解,在里面加上你写的测试类,那么只需要执行这一个类,加入进去的测试类里面的测试方法都会执行一遍。
5、其他功能
测试里面还有一个很好的一个注解@Transactional,这个和平时的事务注解完全不同,加上这个注解可以使这个方法对数据库的操作进行回滚。如下这个图片就不会保存到数据库,结合上@Rollback注解可以控制。@Transactional是否有用,默认true,具体如下:
6、总结
上面总结spring boot单元测试常用和好用的几个注解,基本能满足我们平时的需求。还有几个注解也是可以了解的:
@Before:注释的方法会在这个类每个测试方法之前运行,可以做一些初始化或记录。
@BeforeClass:注释静态方法,在所有方法之前执行一次,一般用于公共配置。
@After:注释的方法会在这个类每个测试方法之后运行,一般用于重置某些变量。
@AfterClass:所有方法之后执行一次,一般用清理作用,比如数据库连接。
@Ingore:注释的方法不会被执行。
对比:
spring boot的测试主要针对方法层面,并且可批量、可回滚。
postman、postwoman针对接口进行http测试,用这个比较多,创建的测试接口可保存、分类。(我几年前的接口都在,可以记录我做过那些项目)
idea的http测试用的不多,不是太了解!不过比postman好的是少开一个软件,一个软件搞定开发和测试。
只有多方面的学习了解,才能知道他们的优缺点,然后才能在具体的场景选择合适的工具,提升工作效率。
Java程序员日常学习笔记,如理解有误欢迎各位交流讨论!
来源:CSDN
作者:IT乐知
链接:https://blog.csdn.net/weixin_46421629/article/details/104829347