Spock

目录

介绍
入门
Spock入门
数据驱动测试
基于交互的测试
扩展名
模组
发行说明
迁移指南

Spock是针对Java和Groovy应用程序的测试和规范框架。使它在人群中脱颖而出的是其美丽而富有表现力的规范语言。由于其JUnit运行程序,Spock与大多数IDE,构建工具和持续集成服务器兼容。国外—款优秀的测试框架,基于BDD思想,功能强大,能够让我们的测试代码规范化,结构层次清晰,结合groovy动态语言的特点以及自身提供的各种标签让编写测试代码更加高效和简洁,提供—种通用、简单、结构化的描述语言

优点

1.测试代码更规范,内置多种标签来规范单测代码的语义
2.测试代码结构清晰,更具可读性,降低后期维护难度
3.提供多种标签,比如: where、with、thrown…帮助我们应对复杂的测试场景
4.使用groovy这种动态语言来编写测试代码,可以让我们编写的测试代码更简洁,5.适合敏捷开发,提高编写单测代码的效率
6.遵从BDD行为驱动开发模式,不单是为了测试覆盖率而测试,有助于提升代码质量IDE兼容性好,自带mock功能

缺点

需要学习下Groovy 的语法,对Maven的配置不是很友好。但是在Gradle 中可以很好的支持

Mockito

目录

1.迁移到Mockito 2.0
2.验证某些行为
3.如何做一些测试桩 (Stub)
4.参数匹配器 (matchers)
5.验证函数的确切、最少、从未调用次数
6.为返回值为void的函数通过Stub抛出异常
7.按照顺序验证执行结果
8.确保交互(interaction)操作不会执行在mock对象上
9.查找冗余的调用
10.化mock对象的创建
11.为连续的调用做测试桩 (stub)
12.为回调做测试桩
13.doReturn()、doThrow()、doAnswer()、doNothing()、doCallRealMethod()系方法的运用
14.监控真实对象
15.修改没有测试桩的调用的默认返回值 ( 1.7版本之后 )
16.为下一步的断言捕获参数 (1.8版本之后)
17.真实的局部mocks (1.8版本之后)
18.重置mocks对象 (1.8版本之后)
19.故障排查与验证框架的使用 (1.8版本之后)
20.行为驱动开发的别名 (1.8版本之后)
21.序列化mock对象
22.新的注解 : @Captor,@Spy,@ InjectMocks (1.8.3版本之后)
23.验证超时 (1.8.5版本之后)
24.自动初始化被@Spies, @InjectMocks注解的字段以及构造函数注入 (1.9.0版本之后)
25.单行测试桩 (1.9.0版本之后)
26.验证被忽略的测试桩 (1.9.0版本之后)
27.mock详情 (1.9.5版本之后)
28.delegate调用真实的实例 (1.9.5版本之后)
29.MockMaker API (1.9.5版本之后)
30.BDD风格的验证 (1.10.0版本之后)
31.追踪或者Mock抽象类 (1.10.12版本之后)
32.Mockito mock对象通过ClassLoader能被序列化/反序列化 (1.10.0版本之后)
33.deep stubs更好的支持泛型 (1.10.0版本之后)
34.Mockito JUnit 规则 (1.10.17版本之后)
35.开/关插件 (1.10.15版本之后)
36.自定义验证失败消息 (2.0.0版本之后)

是模拟一些在应用中不容易构造或者比较复杂的对象,从而把测试与测试边界以外的对象隔离开。mock 对象有助于从测试中消除依赖项,使测试更单元化。

作用

对象信息难构建
依赖的接口尚未开发完成
异常场景(连接异常、超时异常等)
自动化测试

优点

1.由于其他系统模块出错引起本模块的测试错误,我们可以采用mock隔离,避免干预
2.开发过程中,只要交互双方定义好接口,团队之间可以并行工作,进程互不影响;
3.依赖系统无法响应,或者响应异常时,可以用mock Object代替,快速反应,不会影响测试进度;
4.提前接入测试,提供测试效率,当接口定义好后,测试人员就可以创建Mock,把接口添加到自动化测试环境,提前开始测试,起到测试驱动开发效果;
5.可以有效的增加覆盖,接口涉及入参,或者业务逻辑复杂的情况,某些场景无法通过正常手段进行操作,可以通过mock虚拟模拟。

缺点

测试过程中如果大量使用Mock,mock测试的场景失去了真是性,可能会导致在后续的系统性测试时才发现bug,使得缺陷发现的较晚,可能会造成后续修复成本更大;

User Gride(MINA)

目录

第一部分-基础

第1章-入门
1.1-NIO概述
1.2-为什么选择MINA?
1.3-功能
1.4-第一步
1.5-摘要
第2章-基础
2.1-应用架构
2.1.1-服务器架构
2.1.2-客户端架构
2.2-示例TCP服务器
2.3-示例TCP客户端
2.4-样本UDP服务器
2.5-样本UDP客户端
2.6-摘要
第三章-服务
3.1-IoService简介
3.2-IoService详细信息
3.3-IoAcceptor
3.4-IoConnector
第四章-会议
4.1-会话配置
4.2-会话统计
第5章-过滤器
5.1-黑名单过滤器
5.2-缓冲写过滤器
5.3-压缩过滤器
5.4-连接油门过滤器
5.5-错误生成过滤器
5.6-执行器筛选器
5.7-FileRegion写过滤器
5.8-KeepAlive筛选器
5.9-记录过滤器
5.10-MDC注入过滤器
5.11-NOOP过滤器
5.12-Profiler过滤器
5.13-协议编解码器过滤器
5.14-代理过滤器
5.15-参考计数过滤器
5.16-请求/响应过滤器
5.17-会话属性初始化过滤器
5.18-流写过滤器
5.19-SSL / TLS过滤器
5.20-写请求过滤器
第六章-运输
6.1-APR运输
6.2-串行传输
第7章-处理程序
第二部分-MINA Core

第8章-IoBuffer
第9章-编解码器过滤器
第10章-执行器筛选器
第11章-SSL过滤器
第12章-记录过滤器
第三部分-MINA高级

第十三章-调试
第14章-状态机
第15章-代理
第16章-JMX集成
第17章-Spring集成
Apache MINA是一个网络应用程序框架,可以帮助用户轻松开发高性能和高可伸缩性的网络应用程序。它通过Java NIO通过各种传输(例如TCP / IP和UDP / IP)提供了一个抽象的事件驱动的异步API。

优点

为不同的传输类型提供了统一的API:
能实现你自己的API!
利用模拟对象进行单元测试
超载保护和传输流量控制

缺点

MINA只会为每个Session分配一个线程,也就是只能一个一个事件按顺序执行,
如果客户端发完一个数据给服务器就想马上得到回复,而不等整个业务逻辑执行完,也是实现不到的,因为MINA框架要将整个接收事件处理完了,再把回复信息发给客户端。
如果MINA是作为服务器端等待连接的,当客户端正常关闭后业务逻辑也可继续正常执行,但是如果MINA是连接服务器的客户端,则当服务器关闭后,MINA的session也会关闭

Spock、Mockito、junit三者区别

Junit单纯用于测试,不提供mock功能

Mockito虽然提供了mock功能,可以把接口等依赖屏蔽掉,但不提供对静态类静态方法的mock,PowerMock或Jmockit虽然提供静态类和方法的mock,但它们之间需要整合(junit+mockito+powermock),语法繁琐,

Spock通过提供规范描述,定义多种标签(given、when、then、where等)去描述代码“应该做什么”,输入条件是什么,输出是否符合预期,从语义层面规范代码的编写。

Spock自带Mock功能,使用简单方便(也支持扩展其他mock框架,比如power mock),再加上groovy动态语言的强大语法,能写出简洁高效的测试代码,同时更方便直观的验证业务代码行为流转,增强我们对代码执行逻辑的可控性。

Spock、Mockito、MINA相关推荐

  1. 单元测试及框架简介 --junit、jmock、mockito、powermock的简单使用

    转 单元测试及框架简介 --junit.jmock.mockito.powermock的简单使用 2013年08月28日 14:33:06 luvinahlc 阅读数:6413 标签: 测试工具 单元 ...

  2. 从Jetty、Tomcat和Mina中提炼NIO构架网络服务器的经典模式(三)

    2019独角兽企业重金招聘Python工程师标准>>> 从Jetty.Tomcat和Mina中提炼NIO构架网络服务器的经典模式(三) 博客分类: java 最后我们再看看NIO方面 ...

  3. Mina、Netty、Twisted一起学(五):整合protobuf

    protobuf是谷歌的Protocol Buffers的简称,用于结构化数据和字节码之间互相转换(序列化.反序列化),一般应用于网络传输,可支持多种编程语言. protobuf怎样使用这里不再介绍, ...

  4. Java NIO框架Mina、Netty、Grizzly介绍与对比(zz)

    Mina: Mina(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应 ...

  5. 基于PHP+小程序(MINA框架)+Mysql数据库的篮球、足球、羽毛球等校园运动场地预约小程序系统设计与实现

    项目背景和意义 目的:本课题主要目标是设计并能够实现一个基于微信小程序运动场地预约系统,前台用户使用小程序,后台管理使用基PHP+MySql的B/S架构:通过后台添加开放的场地类型(比如羽毛球.篮球. ...

  6. JMockit、Mockito和Powermock介绍

    前言 最近看到公司项目里用到了JMockit的框架测试,结合以往使用的Mockito和PowerMock来分析一下三者分别是如何使用的. 一.JMockit使用 1. 引入依赖 <depende ...

  7. Java NIO框架Mina、Netty、Grizzly介绍与对比

    Java NIO框架Mina.Netty.Grizzly介绍与对比 原文地址:https://blog.csdn.net/e765741668/article/details/45234711 Min ...

  8. Mina、Netty、Twisted一起学(一):实现简单的TCP服务器

    MINA.Netty.Twisted为什么放在一起学习?首先,不妨先分别看一下它们官方网站对其的介绍: MINA: Apache MINA is a network application frame ...

  9. MINA、Netty、Twisted一起学(十一):SSL/TLS

    什么是SSL/TLS 不使用SSL/TLS的网络通信,一般都是明文传输,网络传输内容在传输过程中很容易被窃听甚至篡改,非常不安全.SSL/TLS协议就是为了解决这些安全问题而设计的.SSL/TLS协议 ...

最新文章

  1. 安装flex4 plug-in插件的时候遇到老是在起始处安装不起
  2. [VBScript] 自动删除2小时以前生成的文件
  3. 5分钟带你读「大清」微积分!160多年前清朝数学家撰写文言文版高等数学
  4. Provisioning Services 7.8 入门系列教程之十四 UEFI支持和BOOTPTAB 编辑器
  5. 科学家解码脑信号以控制机器人假肢
  6. VS2010快捷键总结(一)
  7. java判断总共天数_java 判断两个时间相差的天数
  8. 美团和滴滴会合并吗?投资人回应吃瓜群众的期待
  9. 数据粒度的上卷和下钻
  10. 势高,则围广:TiDB 的架构演进哲学
  11. Trying to create too many scroll contexts. Must be less than or equal to: [20000]
  12. 谷歌离开中国的三大原因四大后果
  13. win11解决打开文档延迟
  14. python爬虫——利用超级鹰识别验证码并进行古诗网进行模拟登录
  15. 幻影影音 - 免费的多媒体视频播放器
  16. jquery开发公众号素材管理页面
  17. 1451_TC275 DataSheet阅读笔记12_时钟、温度以及供电
  18. “区块链”技术在传统行业中的应用
  19. php面试时的自我称呼,求职者不知道在面试时该如何称呼hr?
  20. EDA软件常用技巧-SCL配置

热门文章

  1. 中国水产饲料行业市场供需与战略研究报告
  2. 在自学编程这条道上,有人半途而废,有人效率暴增【留言送书】
  3. 就小开心一下而已,入门小白
  4. 自学实践前后端项目4 MMall商城 2
  5. 如何在CSDN的侧边栏添加人形时钟和可爱的小仓鼠
  6. 烈火如歌手游找回服务器,烈火如歌手游完美还原剧中场景
  7. math里面的四舍五入
  8. Nginx从入门到哭泣
  9. C++第三方日志库Glog的安装与使用超详解
  10. 接电话用语总结 (Answer phone call phrase)