springboot 单元测试
之前开发测试程序功能时,采取的都是通过连接访问来测试程序,常用的方法有:
1、直接通过在浏览器输入网址访问;
2、通过公司搭建的eolinker来进行访问测试;
3、通过编写python脚本来进行测试;
4、通过postman工具来测试。
但这样经常会一测就要测一整块,相对单元测试来说定位问题比较麻烦,单元测试能帮助我们拆分方法,单独测试些关键的代码、功能,是日常开发中必备的技能,同时也是各大公司招技术人员的必要要求之一。但今天看了不少文章,也试了不少,发现即是很简单的东西自己也走了不少弯路,所以觉得很有必要把今天的练习写下来。
1、首先是pom.xml的包
<!-- test依赖,必须添加 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId></dependency>
2、下面分别是controller层,service层,jpaRepository层
DemoController.class类
package com.test.demo.controllers; import com.test.demo.domain.entities.Address;import com.test.demo.domain.entities.AddressRepository;import com.test.demo.services.DemoService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController; import java.util.List; @RestController@RequestMapping("/hello")public class DemoController { @Autowired private DemoService demoService; @Autowired private AddressRepository addressRepository; /** * RequestParam 参数里面的name和value的效果是一样的 * RequestMapping 参数里面就只能是value了, * @param name * @return */ @RequestMapping(value = "/queryaddress") public String demo(@RequestParam(name = "name")String name){ List<Address> addressList = demoService.queryAddress("%"+name+"%"); System.out.println(addressList.toString()); return addressList.toString(); } }
DemoService.class类
package com.test.demo.services; import com.test.demo.domain.entities.Address;import com.test.demo.domain.entities.AddressRepository;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service; import java.util.List; @Servicepublic class DemoService { @Autowired private AddressRepository addressRepository; /** * 根据名称查找地区 * @param name * @return */ public List<Address> queryAddress(String name){ return addressRepository.queryListByName(name); } }
AddressRepository.class类
package com.test.demo.domain.entities; import org.springframework.data.jpa.repository.JpaRepository;import org.springframework.data.jpa.repository.Query; import java.util.List; public interface AddressRepository extends JpaRepository<Address, Integer>{ /** * 根据地区查找数据 * @param name * @return */ @Query(value = "select * from address where address like ?",nativeQuery = true) List<Address> queryListByName(String name);}
3、下面是新建测试类
package com.test.demo.controllers; import com.test.demo.Main;import com.test.demo.domain.entities.Address;import com.test.demo.domain.entities.AddressRepository;import com.test.demo.services.DemoService;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.SpringApplicationConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import java.util.List; @RunWith(SpringJUnit4ClassRunner.class)@SpringApplicationConfiguration(classes = Main.class)//扫描启动类public class DemoTest { @Autowired private AddressRepository addressRepository; @Autowired private DemoController demoController; @Autowired private DemoService demoService; /** * 查找地址 * 访问addressRepository层 */ @Test public void query() { System.out.println("===访问addressRepository层===="); List<Address> lst = addressRepository.queryListByName("%我%"); System.out.println(lst.size()); if (lst.size() > 0) { for (Address ad : lst) { System.out.println(ad.toString()); } } } /** * 查找地址,访问controller层 */ @Test public void queryAddress(){ System.out.println("===访问controller层===="); String str = demoController.demo("%我%"); System.out.println(str); } /** * 查找地址,访问service层 */ @Test public void queryServiceAddress(){ System.out.println("===访问service层===="); List<Address> lst = demoService.queryAddress("%我%"); System.out.println(lst.size()); if (lst.size() > 0) { for (Address ad : lst) { System.out.println(ad.toString()); } } } }
测试:
点击红箭头所指位置,可以进行想应的测试:
测试结果:
应用实例已放到github上:https://github.com/DYH2020/springBootDemo
参考项目:https://github.com/BraveWangDev/SpringBoot/tree/master/SpringBoot-Junit
转载于:https://www.cnblogs.com/dyh2025/p/9251144.html
springboot 单元测试相关推荐
- springboot单元测试类
springboot单元测试类,引入下方jia包 <!--version 依据当前springboot版本即可--> <dependency><groupId>or ...
- mockito mock void方法_用过举手!SpringBoot 单元测试利器Mockito
Mockito 是一种 Java mock 框架,他主要是用来做 mock 测试的,他可以模拟任何 Spring 管理的 bean.模拟方法的返回值.模拟抛出异常...等,在了解 Mockito 的具 ...
- 基于链路思想的SpringBoot单元测试快速写法
简介:本文更偏向实践而非方法论,所提及的SpringBoot单元测试写法亦并非官方解,仅仅是笔者自身觉得比较方便.效率较高的一种写法.每个团队甚至团队内的每位开发可能都有自己的写法习惯和风格,只要能实 ...
- SpringBoot单元测试RunWith注解无法解析
关于SpringBoot单元测试RunWith注解没有提示,无法解析,没有导包提示的问题,笔者在此说明一下. 首先说明一下项目的环境 IDE是IDEA 创建项目使用的是Spring Initializ ...
- SpringBoot --- 单元测试(2.1.x及其它版本)
SpringBoot --- 单元测试(2.1.x及其它版本) 1.SrpingBoot 2.1.x 1.1 依赖 1.2 测试 2.SpringBoot 2.2.x及以上 2.1 依赖 2.2 测试 ...
- SpringBoot单元测试如何回滚测试数据
SpringBoot单元测试如何回滚测试数据 在做单元测试的时候,不想测试的数据保留在数据库,所以可以给测试类添加事务,让其回滚. 查了一下资料,网上说在方法前面添加@Transactional和@R ...
- Springboot 单元测试结合Jacoco收集单元测试覆盖率
目录 单元测试 Junit 简单例子 mockito Mock 的限制 Powermock maven 引入 注解使用 处理私有方法 mock构造函数 结合Springboot一起使用 各种runne ...
- SpringBoot单元测试:MockMvc的自动配置
MockMvc 的自动配置 上面我们提到@AutoConfigureMockMvc 提供了自动配置 MockMvc 的功能,实例化MockMvc 的 具 体 代 码 在 spring-boot-tes ...
- springboot 系列教程十:springboot单元测试
2019独角兽企业重金招聘Python工程师标准>>> 单元测试 springboot 支持多种方式的单元测试,方便开发者测试代码,首先需要在 pom 文件中添加 starter & ...
最新文章
- HSmartWindowControl 之 摄像头实时显示( 使用 WPF )
- 商越加入阿里云原生合作伙伴计划,共创智慧采购新生态
- 调试记录- error: #error “must enable c++17“
- android 弹出网格菜单,在android中的recyclerView中显示弹出按钮的确...
- P5895-[IOI2013]dreaming梦想【树的直径,结论】
- Pycharm 专业版 导入系统pip安装的包
- 将Source Insight里面着色代码拷贝到word里面的方法
- 【kafka系列】kafka之生产者发送消息实践
- 火速收藏!Android 开发者必会的内存泄漏指南
- ES6学习笔记(对象)
- BZOJ2330【SCOI2011】糖果
- Java8 stream新定义运算
- Python学习Day3-高级数据类型
- 撇开PUE,评估数据中心增长的真正环境影响
- nemesis什么车_世界上十大最强的超级跑车,Trion Nemesis排名第一
- 2019 秦皇岛CCPC赛后总结
- spss分析方法-对应分析(转载)
- java作为微信小程序的后端_微信小程序连接java后端
- Linux中的defunct进程(僵尸进程)
- 【Fiddle】The Fiddler AutoResponder is enabled, but this request did not match any of the listed rules