java moco_使用moco单元测试
在项目中,除了查询数据库,还要调用外部的服务,这这时候我们在写单元测试的时候,会考虑怎么覆盖着一块代码:
1.封装一个方法,然后mock这个方法。
2.直接配置好调用的服务,测试的时候调用真实存在的服务。
3.起一个服务,mock这个调用的这个服务。
第一种方法虽然mock了这个方法,但是没有覆盖到调用远端的这个服务处理过程,比如序列化,contentType等等。
第二种方法过于依赖已经外部的服务,测试的失败的概率也是比较高的,也有点集成的意思,会把单元测试做的过重,并且不好维护。
第三种方法,可以配置协议启动,当方法调用的时候,实际调用我们mock的服务,也想过开发一个mock服务,我们配置需要调用的服务,返回格式内容,感觉这种适合给前端接口定义的时候用,不适合后端开发。
发现前人开发了moco(https://github.com/dreamhead/moco)来实现第三种方法来做单元测试。有几种使用Moco的方法。一种是API,您可以在单元测试中使用它。另一个是独立运行Moco。当前,需要将所有配置都放在JSON文件中。
如果是maven项目,那么加入如下的依赖:
然后在junit的单元测试中,加入moco runner的服务,这里我使用作者git中的test描述,需要写一个配置文件,这里的request是请求的配置,response可以配置返回的contentType类型,比如text,json,file等常用的:
然后使用MocoJunitRunner.jsonHttpRunner(12306, "src/test/resources/foo.json")配置端口和配置文件:
这样就可以单元测试啦!
java moco_使用moco单元测试相关推荐
- java 单元测试用例_Java 单元测试及JUnit的使用
Java 单元测试: 单元测试是开发者编写的一小段代码,用于检测被测代码的一个很小的.很明确的功能是否正确. 单元测试的方法: 人工静态分析:人工阅读检测代码 自动静态分析:使用代码复查工具检查 自动 ...
- 嘿嘿,JAVA里第一次运行单元测试成功,立存
按书上写的单元测试. 居然一次过,爽!!! package org.smart4j.chapter2.test;import java.util.HashMap; import java.util.L ...
- java私有方法单元测试_如何通过java反射的方式对java私有方法进行单元测试
待测试的私有方法: import org.testng.Assert; import org.testng.annotations.BeforeClass; import org.testng.ann ...
- java day25【Junit单元测试 、反射 、 注解】
第一章 Junit单元测试: * 测试分类: 1. 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值. 2. 白盒测试:需要写代码的.关注程序具体的执行流程. * Junit使用:白盒测 ...
- Spock in Java 慢慢爱上写单元测试
前言 最近小组里面引进了Spock这个测试框架,本人在实际使用了之后,体验非常不错,本篇文章一是为了巩固输入的知识,二是为了向大家推广一下. 在了解学习Spock测试框架之前,我们应该先关注单元测试本 ...
- Java求解一元二次方程+单元测试(IDEA+Junit)
介绍 环境配置 使用idea IDE 进行单元测试,首先需要安装JUnit 插件. 1.安装JUnit插件步骤 File–>settings–>Plguins–>Browse rep ...
- Uber:Java中的不稳定单元测试处理
Flaky Tests介绍 单元测试是任何持续集成(CI)系统的基石.在合并之前,它向软件工程师警告新实施的代码的错误和现有代码的回归.这在软件开发生命周期的早期就能发现bug,从而确保提高软件的可靠 ...
- Java开发手册之单元测试,还没搞懂JVM
正例:为了不受外界环境影响,要求设计代码时就把SUT的依赖改成注入,在测试时用spring 这样的DI框架注入一个本地(内存)实现或者Mock实现. [强制]对于单元测试,要保证测试粒度足够小,有助于 ...
- 阿里巴巴java开发编码规范——单元测试
目录 强制 推荐 参考 强制 1.好的单元测试必须遵守AIR原则.A:Automatic(自动化),I:Independent(独立性),R:Repeatable(可重复) 2.单元测试应该是全自动执 ...
最新文章
- 如何使div填充剩余的水平空间?
- 两个等号(==)和三个等号(===)的区别
- 【Python】简单而不简约:一份Python小抄奉上
- 1.进程间的关系:终端,网络设备
- Unity基础之:UnityAPI的学习
- 【免费活动】字节跳动背后的音视频技术揭秘
- On Tutorial with Caffe--a Hands DIY DL for Vision
- Python基于用户协同过滤算法的电影推荐代码demo
- TOJ 2353: Billiard
- jquery中css()与animate()
- 清理谷歌浏览器注册表_【从注册表解决谷歌浏览器主页被篡改】注册表被篡改_谷歌浏览器被360篡改...
- 36-基于51单片机的LED彩灯控制器设计
- LANP+KEEPALIVED集群(三)
- linux ogv格式转换,使用OGV转换将OGV转换为Linux中的AVI | MOS86
- win10升级助手_不想使用一键重装软件?微软win10升级助手来了
- 如何通过KRPano全景资源下载助手来批量下载720yun的全景图
- unity lookat导致物体颠倒怎么解决_在Unity 2D中如何用一行代码实现LookAt的效果,以及向量归一化小总结...
- 7-4 输出两行短句 (10分)
- 常见游戏运行错误代码,解决教程!
- python壁纸高清图片_详解Python静态网页爬取获取高清壁纸