Spock中Mock()、Stub()、Spy()方法的区别

Spock系列 3年前 (2021-08-30) 浏览: 5926 评论: 7

Mock 按照Spock官方文档(https://spockframework.org/spock/docs/2.0/interaction_based_testing.html)的定义: 描述规范下的对象与其合作者之间(强制)交互的行为。 说人话就是Mock()的对象是一个虚拟类,用于替换真实的类,为每个方法调用返回一个默认值:引用类型是null,基本类型为 0 或 false,比如可以把调用其

Spock是什么?它和JUnit,JMock有什么区别?

Spock系列 4年前 (2020-07-26) 浏览: 3493 评论: 3

这是Spock系列的第一篇文章,整个专辑会介绍Spock的用途,为什么使用Spock?它能给我们带来什么好处?它和JUnit、JMock、Mockito有什么区别?我们平时写单元测试代码的常见问题和痛点,Spock又是如何解决的,Spock的代码怎么编写以及Spock的优势和缺点等内容,让大家对Spock有个客观的了解。 Spock是什么? 斯波克是国外一款优秀的测试框架,基于BDD思想,功能强大

Spock注意事项

Spock系列 4年前 (2020-08-20) 浏览: 1838 评论: 2

Spock虽然好用,但要应用到实际项目中还是需要注意几个问题,下面讲下我们公司在使用过程中遇到的一些问题和解决方案 版本依赖 要使用Spock首先需要引入相关依赖,目前使用下来和我们项目兼容的Spock版本是1.3-groovy-2.5,以maven为例(gradle可以参考官网),完整的pom依赖如下: <spock.version>1.3-groovy-2.5</spock.

Spock代码讲解 – 静态方法测试

Spock系列 4年前 (2020-08-18) 浏览: 3539 评论: 2

这是Spock系列的第七篇文章,本篇主要讲解Spock如何扩展第三方power mock对静态方法进行测试 实现原理 前面的文章讲到Spock的单测代码是继承自Specification基类,而Specification又是基于Junit的注解@RunWith()实现的,代码如下: @RunWith(Sputnik.class) @SuppressWarnings("UnusedDeclarati

Java 17的一些新特性

Java系列 2年前 (2022-03-07) 浏览: 479 评论: 2

Java17将是一个长期支持的LTS版本。 您一定知道Java采用了6个月的发布周期。也就是说,它将每6个月发布一个新版本的Java。每隔3年,LTS版本就会发布一次。目前,Java 11是LTS版本,于2018年9月发布。但在Java17发布后,它将是最新的LTS支持。 许多组织依赖LTS版本,所以他们使用的是Java11。但在Java17发布后,他们将使用Java17(可能)。 自从将Java

Java踩坑记系列之线程池

Java系列 4年前 (2020-02-16) 浏览: 4920 评论: 2

线程池大家都很熟悉,无论是平时的业务开发还是框架中间件都会用到,大部分都是基于JDK线程池ThreadPoolExecutor做的封装,比如tomcat的线程池,当然也有单独开发的,但都会牵涉到这几个核心参数的设置:核心线程数,等待队列,最大线程数,拒绝策略等。 先说下我们项目组在使用线程池时踩到的坑: 线程池的参数设置一定要结合具体的业务场景,区分I/O密集和CPU密集,如果是I/O密集型业务,

Spock代码讲解- if esle 多分支场景测试

Spock系列 4年前 (2020-08-09) 浏览: 2668 评论: 2

这是Spock系列的第四篇文章,在第二篇讲单元测试开发成本和效率问题时,提到了如何测试复杂的if else场景,分别使用Junit和Spock的实现,以及Spock的优势在哪里,这一篇会详细讲解Spock代码的语法 一. expect + where 如果业务比较复杂,对应的代码实现会有不同的分支逻辑,类似下面的伪代码: if () { if () { // 代码逻辑 } else { // 代码

如何使用Eclipse内存分析工具定位内存泄露

jvm 3年前 (2021-01-03) 浏览: 547 评论: 1

本文以我司生产环境Java应用内存泄露为案例进行分析,讲解如何使用Eclipse的MAT分析定位问题 一. 背景 11月10号晚上8点收到报警邮件,一看是OOM 打开公司监控系统查看应用各项指标发现JVM中老年代在持续增长(从上次发布10月30号到11月10号的12天内一直在增长, 存在内存泄露迹象) 从图中可以看出, 从10月30号发布到11月10号oom期间11天老年代一直在缓慢上涨, 虽然有

如何在IntelliJ IDEA调试异步代码

相关技术 11个月前 (05-22) 浏览: 1750 评论: 1

开启异步堆栈跟踪:Settings -> Build, execution, deployment -> Debugger -> Async stack traces -> Instrumenting agent 调试异步代码是一个挑战,因为任务通常在一个线程中调度,在另一个线程执行。每个线程都有自己的堆栈,因此很难弄清楚线程启动之前发生了什么。 IntelliJ IDEA

领域驱动设计示例

相关技术 3年前 (2021-04-23) 浏览: 575 评论: 1

我以前看过很多IT项目。有的设计得很好,有的设计得很差。基于这些经验,我想写一点关于一个示例项目的内容,我还想展示如何用UML对一个示例项目进行建模,以及如果我们将领域驱动的设计原则应用到模型中会发生什么。 在继续之前,您应该阅读Eric Evans的“域驱动设计”和Vaughn Vernon的“实现域驱动设计”两本书。这个例子大部分都是基于他们的工作,如果你想深入研究领域驱动的设计,他们的书是必

Spring Boot使用GraphQL入门

Java系列 3年前 (2021-10-31) 浏览: 3289 评论: 1

GraphQL是来自Facebook的一个相对较新的概念,被宣传为RESTforWebAPI的替代品。 本文将介绍如何使用Spring Boot设置GraphQL服务器,以便将其添加到现有应用程序或用于新应用程序。 什么是GraphQL? 传统的RESTAPI使用服务器管理的资源概念。这些资源可以按照各种HTTP谓词以一些标准方式进行操作。只要我们的API符合资源概念,它就可以很好地工作,但当我们

使用方法引用简化Java中的函数式编程

Java系列 2年前 (2021-12-13) 浏览: 503 评论: 1

与lambdas一起,JavaSE8将方法引用引入Java语言。本文简要概述Java中的方法引用,然后通过Java代码示例开始使用它们。在本文结束时,你将了解如何使用方法引用引用类的静态方法、绑定和未绑定的非静态方法以及构造函数,以及如何使用它们引用超类和当前类类型中的实例方法。文还将了解为什么许多Java开发人员采用lambda表达式和方法引用作为匿名类的更干净、更简单的替代方案。 方法引用 有

Java微服务:代码示例、教程

微服务 3年前 (2021-10-24) 浏览: 872 评论: 1

随着开发人员致力于创建更大、更复杂的应用程序,微服务在开发领域得到了越来越多的使用,这些应用程序作为小型服务的组合得到了更好的开发和管理,这些服务协同工作以实现更大、应用程序范围的功能。工具正在兴起,以满足使用逐件方法来思考和构建应用程序的需要。坦白说,与同时考虑整个应用程序相比,这种方法更令人难以置信。今天,我们将了解微服务、使用此功能的好处以及一些代码示例。 什么是微服务? 微服务是一种面向服

线程池ForkJoinPool简介

Java系列 4年前 (2020-03-01) 浏览: 2453 评论: 0

ForkJoinPool线程池最大的特点就是分叉(fork)合并(join),将一个大任务拆分成多个小任务,并行执行,再结合工作窃取模式(worksteal)提高整体的执行效率,充分利用CPU资源。 一. 应用场景 ForkJoinPool使用分治算法,用相对少的线程处理大量的任务,将一个大任务一拆为二,以此类推,每个子任务再拆分一半,直到达到最细颗粒度为止,即设置的阈值停止拆分,然后从最底层的任

Java异步编程指南

Java系列 4年前 (2020-03-01) 浏览: 3328 评论: 0

在我们平时开发中或多或少都会遇到需要调用接口来完成一个功能的需求,这个接口可以是内部系统也可以是外部的,然后等到接口返回数据了才能继续其他的业务流程,这就是传统的同步模式。 同步模式虽然简单但缺点也很明显,如果对方服务处理缓慢迟迟未能返回数据,或网络问题导致响应变长,就会阻塞我们调用方的线程,导致我们主流程的耗时latency延长,传统的解决方式是增加接口的超时timeout设置,防止无限期等待。

Spock如何解决传统单元测试开发中的痛点

Spock系列 4年前 (2020-08-01) 浏览: 4130 评论: 0

这是Spock系列的第二篇文章,上一篇介绍了Spock的特点以及它和JUnit,JMock的区别,这篇主要讲下我们平时写单元测试过程中遇到的几种常见问题,分别使用JUnit和Spock如何解决,通过对比的方式给大家一个整体认识。 一. 单元测试代码开发的成本和效率 复杂场景的业务代码,在分支(if/else)很多的情况下,编写单测代码的成本会相应增加,正常的业务代码或许只有几十行,但为了测试这个功

JVM学习笔记之codeCache

Java系列 4年前 (2020-02-18) 浏览: 1031 评论: 0

上海这边的互联网公司大部分是2-7号在家远程办公,有些可能更晚,这期间工作上的事情不多,就把《深入理解java虚拟机》这本书又撸了一遍,顺便写下心得体会,和大家分享,温故知新。 一. codeCache简介 从字面意思理解就是代码缓存区,它缓存的是JIT(Just in Time)编译器编译的代码,简言之codeCache是存放JIT生成的机器码(native code)。当然JNI(Java本地

Java开发规范之性能篇

Java系列 4年前 (2020-02-17) 浏览: 730 评论: 0

JAVA开发中,大部分的性能问题原因并不在于JAVA语言本身,而是我们用这些语言写的程序,所以养成良好的编码习惯非常重要。 下面给大家分享一些日常开发中比较常见的典型案例: 一. 类中的内部方法声明为private 很多同学觉得这个无所谓,写代码时喜欢一个类里的所有方法都是public的(原因大家都懂),美其名曰:便于后期扩展。。 对于不需要外部访问的方法改为私有的,不仅仅是因为面向对象的思想,符

JVM Metaspace内存溢出排查与总结

Java系列 4年前 (2020-02-13) 浏览: 7587 评论: 0

一. 现象 前段时间公司线上环境的一个Java应用因为OOM的异常报警,导致整个服务不可用被拉出集群,本地模拟重现的现象如下: 当时的解决方案是增加metaspace的容量:-XX:MaxMetaspaceSize=500m,从原来默认的256m改为500m,虽然没有再出现oom,但这个只是临时解决方案,通过公司的监控系统观察metaspace的使用情况还是在上升,而且后面随着业务访问量越来越大还

开源流量回放平台 AREX 在携程的大规模落地实践

Java系列 2周前 (04-08) 浏览: 22 评论: 0

转载:https://mp.weixin.qq.com/s/USM6mkVeEyOv6anwnyI0oQ AREX 是一款由携程开源的流量回放平台,孵化于机票 BU 内部,聚焦录制回放核心链路的建设,从基础方案建设到核心业务线的深入落地验证,在集团复杂业务场景下不断迭代和优化,积累了大量经验,取得了可见的成果,在携程落地至今已有 4000+ 应用接入,交付率和缺陷数均有所改善。 本篇文章主要介绍

登录

忘记密码 ?

切换登录

注册