junit

补习系列(8)-springboot 单元测试之道

最后都变了- 提交于 2020-05-01 06:15:46
[TOC] 目标 了解 单元测试的背景 了解如何 利用 springboot 实现接口的测试 了解如何 利用 mokito 做代码的 mock 一、About 单元测试 单元测试其实是一种廉价的技术,是由开发者创建运行测试代码,用于对程序模块(软件设计的最小单位)进行正确性检验的一种做法。 而所谓的最小单元,就是指应用的最小可测试部件。 在面向对象领域,最小单元对应于类的某个成员方法。 通常意义的单元测试会用于验证某场景、某条件下某方法的行为结果,举个例子: 我想验证 Equals 方法,在两个对象类型不一致时应该返回 false 单元测试的初衷,是对各个相互独立,互不影响的基本单元基线测试,以此来保证核心代码的质量。 每一段单元测试代码,都一定会 包含几个部分 : Arrange 用于初始化一些被测试方法需要的参数或依赖的对象。 Act方法 用于调用被测方法进行测试。 Assert 用于验证测试方法是否按期望执行或者结果是否符合期望值 See !并不是很复杂,可是大多数开发者并不喜欢做单元测试。 而且,有一个现象很有意思,水平越高的程序员,越不喜欢写测试代码,why? “ 因为单元测试,主要是用来防低级程序员挖坑的啊 ” 这句话不是我说的,但却代表了相当一部分程序员的心声.. 那么,单元测试到底要不要做,并不是本文要讨论的问题。 建议大家阅读下 《单元测试之道-Java版本》

intellij JUnit mockito

廉价感情. 提交于 2020-05-01 06:10:38
在intellij越来越普及的情况下,利用JUnit在intellij中进行测试就显得很基础了,但网上的资料总有误导的地方,这里记录一下。 总体而言,要开始单元测试,可以分为三步,添加相关的插件,添加相关的依赖,编写测试方法,下面依序说下。 一、添加相关的插件 在intellij中利用JUnit进行测试,需要三个插件,Junit,用来执行测试用例,JUnitGenerator V2.0,用来生成测试用例, Coverage, 用来生成测试报告。 安装插件完毕,还需要对JUnit进行适当的设置: Junit Generator设置 Setting --》 Other Setting--》 Junit Generator 更改输出路径, Output Path: ${SOURCEPATH}/../../test/java/${PACKAGE}/${FILENAME} 更改默认单元测试框架, Default Template: Junit 4 更改JUnit4的默认模板, Junit 4 test. $entry.packageName  $entry.packageName <pre>$date</pre>  <pre>$today</pre> 二,添加相关的依赖 在maven项目中,添加如下的依赖: <dependency> <groupId>junit</groupId>

在idea中使用@Test注解报错的解决方案

爱⌒轻易说出口 提交于 2020-05-01 06:04:13
Junit注解 为什么使用单元测试注解,就是为了单元测试自己的代码有没有写错,方便于排错误, 没有使用注解之前,我们开发时测试一个刚写的类,一般输出看到结果都要写一个main方法才能测试,但是使用的单元测试之后就不在需要使用main方法就可以测试类的方法有没有写错。如果使用main方法测试可能还会出现程序在发布时,我们还有删除原来的测试时写的main方法测试,就会加重程序员的工作量,还有可能出现未知的错误,但是如果使用 单元测试,那这个单元测试只在测试的时候会用到,在程序版本发布时是不会编译的。 这就是使用单元测试和不使用单元测试的最大区别; 那么单元测试是怎么实现的,下面是我在使用idea 编写junit 单元测试出现的错误。 使用IDEA 的@Test注解报错。 第一个错误是没有加载到junit包,后来发现是junit的版本太低了,导入4.12就好了。 第二点错误可能就是没有将test文件夹设置为Test Resource Root,如下图 第三点:assertEquals()这个方法是判断两个字符串相不相等,如果不相等就会抛异常,如果Ok就如上图的到的是一行绿色的行; 其余异常: 在网上查了下将,说是去掉scope就行 去掉之后发现还是不行,改了下版本,我之前是同最新的4.12版本,改成 4.10版本,一跑发现没有错误了 如果还是不行就查一查

Springboot21 整合redis、利用redis实现消息队列

ぐ巨炮叔叔 提交于 2020-05-01 04:26:15
1 前提准备   1.1 创建一个springboot项目     技巧01:本博文基于springboot2.0创建   1.2 安装redis     1.2.1 linux版本        参考博文     1.2.2 windows版本       到redis官网下载windows版本的 压缩包 后,解压即可   1.3 redis使用     本博文以window版本为例子, linux版本请参见     1.3.1 开启服务端       》进入到解压后的redis根目录         》执行 redis-server.exe     1.3.2 开启客户端       进入到redis解压目录 -> 执行 redis-cli.exe     1.3.3 测试redis服务端和客户端的通信       在redis客户端执行 ping,如果返回了 PONG 就表明redis前后端通信正常     1.3.4 关闭       客户端和服务端都用 Ctrl + C 就可以关闭了 2 SpringBoot 集成 Redis   2.1 创建一个SpringBoot项目     技巧01:创建时引入 spring-boot-starter-web 和 spring-boot-starter-data-redis <? xml version="1.0" encoding

IDEA插件之JProfiler

拥有回忆 提交于 2020-04-30 19:49:40
1、是什么?来用干嘛的?   一个商业授权的Java剖析工具。   用来剖析程序内存、CPU使用情况,找到性能瓶颈,快速定位问题所在。 2、IDEA安装JProfiler插件   (1)File -> Settings -> Plugins 点击Marketplace输入“JProfiler” 点击下载    安装完重启IDEA即可。   (2)安装Profiler for windows版本     https://download-gcdn.ej-technologies.com/jprofiler/jprofiler_windows-x64_11_0_2.exe     自行安装,不多累述。   (3) 安装完成后,在IDEA进行配置到安装的Windows版的profiler上。     指定安装好的profiler.exe即可。不知道路径在哪,在桌面的JProfiler右击属性可以看到文件目录。 3、JProfiler插件的使用 (1)使用JUnit进行重复测试   当我们使用JUnit进行单元测试的时候,Configuration上会显示当前进行的测试方法或方法集的配置:   选择编辑Configuration即可配置运行次数,可选项为一次、指定次数、重复至失败停止和重复至手动停止。   启动JProfiler时,会出现如图所示需要选择的界面,按照需求选择

springboot入门_data-jpa

99封情书 提交于 2020-04-30 16:33:07
今天学习了在springboot项目中访问数据库,做下笔记,以备后期查看。 Spring Data JPA 是 Spring 基于 ORM 框架和JPA 规范 封装的一套应用框架,包含了增删改查等常用功能,可以让用户用较少的代码实现对数据的访问和操作进而提高开发效率! 目前我在web开发中,访问数据库的常用ORM框架是hibernate和mybatis,而springboot默认提供的是使用Hibernate操作数据库,下面分别看看在springboot中如何使用hibernate和mybatis。 一 data jpa,springboot-data-jpa帮我们定义了一些简单的接口实现了一些简单的功能,如CURD。我们要使用这些功能,只需要继承接口CrudRepository。 创建建maven的springboot项目,引入所需要的jar,pom.xml文件如下: 1 < project xmlns ="http://maven.apache.org/POM/4.0.0" xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation ="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"

Jenkins环境搭建(1)-下载与安装

ε祈祈猫儿з 提交于 2020-04-30 13:57:41
Jenkins简介 Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,它是一个免费的源代码,可以处理任何类型的构建或持续集成。集成Jenkins可以用于一些测试和部署技术。 Jenkins目的 1.持续、自动地构建/测试软件项目; 2.监控软件开放流程,快速问题定位及处理,提示开放效率。 Jenkins特性 开源的java语言开发持续集成工具,支持CI,CD; 易于安装部署配置:可通过yum安装,或下载war包以及通过docker容器等快速实现安装部署,可方便web界面配置管理; 消息通知及测试报告:集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知,生成JUnit/TestNG测试报告; 分布式构建:支持Jenkins能够让多台计算机一起构建/测试; 文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等; 丰富的插件支持:支持扩展插件,你可以开发适合自己团队使用的工具,如git,svn,maven,docker等。 Jenkins下载 下载地址如下: http://mirrors.jenkins-ci.org/windows/ 各个版本的jenkins下载地址: http://mirrors.jenkins-ci.org/ Jenkins官网地址: https://jenkins.io/index

Junit单元测试之MockMvc

此生再无相见时 提交于 2020-04-30 11:46:28
在测试restful风格的接口时,springmvc为我们提供了MockMVC架构,使用起来也很方便。 下面写个笔记,便于以后使用时参考备用。 一 场景 1 . 提供一个restful风格的接口 import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import qinfeng.zheng.mockmvcdemo.dto.User; import java.util.ArrayList; import java.util.List; @RestController public class UserController { @GetMapping( "/users" ) public List<User> getUserList() { List <User> users = new ArrayList<> (); users.add( new User()); users.add( new User()); return users; } } @Data public class User { private String username; private String password;

Spring Cloud Resilience4j 断路器

北城余情 提交于 2020-04-30 11:15:27
学习在 Spring Cloud 中使用 Resilience4j 实现断路器,包括断路器 CircuitBreaker 、限流 RateLimiter 、请求重试 Retry 等功能。 1 概述 Resilience4j 是 Spring Cloud Greenwich 版推荐的 容错解决方案 ,相比 Hystrix , Resilience4j 专为 Java 8 以及函数式编程而设计。它主要提供了如下功能: 断路器 限流 基于信号量的隔离 缓存 限时 请求重试 2 基本用法 创建普通的 Maven 项目 resilience4j ,手动添加依赖,如下: <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <dependency> <groupId>io.github.resilience4j</groupId> <artifactId>resilience4j-circuitbreaker</artifactId> <version>0.13.2</version> </dependency> <dependency> <groupId>io.github.resilience4j<

spring-boot error org.springframework.security.core.userdetails.User cannot be cast to in.cad.security.model.MyUserPrincipal class

六眼飞鱼酱① 提交于 2020-04-30 06:29:11
问题 I am completely new to spring boot and trying to write Unit test cases but stuck completely and not able to understand how Authentication works. Controller class @PostMapping (path = "/createConcept") @ApiOperation(value = "Composite object with conceptCO with added roles", response = ConceptCO.class) public ConceptCO createConcept( @RequestBody final ConceptFormVO conceptFormVO, @ApiIgnore Authentication authentication ) { ConceptDTO conceptDTO = new ConceptDTO(); BeanUtils.copyProperties