之前开发测试程序功能时,采取的都是通过连接访问来测试程序,常用的方法有:

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 单元测试相关推荐

  1. springboot单元测试类

    springboot单元测试类,引入下方jia包 <!--version 依据当前springboot版本即可--> <dependency><groupId>or ...

  2. mockito mock void方法_用过举手!SpringBoot 单元测试利器Mockito

    Mockito 是一种 Java mock 框架,他主要是用来做 mock 测试的,他可以模拟任何 Spring 管理的 bean.模拟方法的返回值.模拟抛出异常...等,在了解 Mockito 的具 ...

  3. 基于链路思想的SpringBoot单元测试快速写法

    简介:本文更偏向实践而非方法论,所提及的SpringBoot单元测试写法亦并非官方解,仅仅是笔者自身觉得比较方便.效率较高的一种写法.每个团队甚至团队内的每位开发可能都有自己的写法习惯和风格,只要能实 ...

  4. SpringBoot单元测试RunWith注解无法解析

    关于SpringBoot单元测试RunWith注解没有提示,无法解析,没有导包提示的问题,笔者在此说明一下. 首先说明一下项目的环境 IDE是IDEA 创建项目使用的是Spring Initializ ...

  5. 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 测试 ...

  6. SpringBoot单元测试如何回滚测试数据

    SpringBoot单元测试如何回滚测试数据 在做单元测试的时候,不想测试的数据保留在数据库,所以可以给测试类添加事务,让其回滚. 查了一下资料,网上说在方法前面添加@Transactional和@R ...

  7. Springboot 单元测试结合Jacoco收集单元测试覆盖率

    目录 单元测试 Junit 简单例子 mockito Mock 的限制 Powermock maven 引入 注解使用 处理私有方法 mock构造函数 结合Springboot一起使用 各种runne ...

  8. SpringBoot单元测试:MockMvc的自动配置

    MockMvc 的自动配置 上面我们提到@AutoConfigureMockMvc 提供了自动配置 MockMvc 的功能,实例化MockMvc 的 具 体 代 码 在 spring-boot-tes ...

  9. springboot 系列教程十:springboot单元测试

    2019独角兽企业重金招聘Python工程师标准>>> 单元测试 springboot 支持多种方式的单元测试,方便开发者测试代码,首先需要在 pom 文件中添加 starter & ...

最新文章

  1. HSmartWindowControl 之 摄像头实时显示( 使用 WPF )
  2. 商越加入阿里云原生合作伙伴计划,共创智慧采购新生态
  3. 调试记录- error: #error “must enable c++17“
  4. android 弹出网格菜单,在android中的recyclerView中显示弹出按钮的确...
  5. P5895-[IOI2013]dreaming梦想【树的直径,结论】
  6. Pycharm 专业版 导入系统pip安装的包
  7. 将Source Insight里面着色代码拷贝到word里面的方法
  8. 【kafka系列】kafka之生产者发送消息实践
  9. 火速收藏!Android 开发者必会的内存泄漏指南
  10. ES6学习笔记(对象)
  11. BZOJ2330【SCOI2011】糖果
  12. Java8 stream新定义运算
  13. Python学习Day3-高级数据类型
  14. 撇开PUE,评估数据中心增长的真正环境影响
  15. nemesis什么车_世界上十大最强的超级跑车,Trion Nemesis排名第一
  16. 2019 秦皇岛CCPC赛后总结
  17. spss分析方法-对应分析(转载)
  18. java作为微信小程序的后端_微信小程序连接java后端
  19. Linux中的defunct进程(僵尸进程)
  20. 【Fiddle】The Fiddler AutoResponder is enabled, but this request did not match any of the listed rules

热门文章

  1. windows server 2012多用户用一个账号同时登陆
  2. Spring 自定义注解玩法大全,从入门到…
  3. ZooKeeper 定位:能解决什么问题?不能解决什么问题?
  4. 硬核!尽量避免 BUG 手法
  5. Spring 异步调用,一行代码实现!舒服,不接受任何反驳~
  6. 我会手动创建线程,为什么让我使用线程池?
  7. 绝了!一个妹子 rm -rf 把公司整个数据库删没了
  8. RESTful Web 服务 - 消息
  9. 模型融合之stacking方法
  10. mongodb 索引去重_PostgreSQL13新特性解读Btree索引去重Deduplication