Java Servlet单元测试
Java Servlet单元测试
1. 解决痛点
虽然目前主流的开发方式,很多都是通过controll或者微服务提供api.但是不免还是需要写几个servlet完成接口开发.按照常规,servlet调用服务层代码,只需做下服务层单元测试就好了.可是,这里就忽略了请求参数处理过程的测试,按照以往,如果需要测试,往往是先运行一个tomcat,然后找到一个借口测试工具,完成接口测试.其实没这么麻烦,使用spring-test即可快速搞定.解决了如下痛点
- 单元测试覆盖不全面
- 不需要启动一个servlet容器
- 不需要第三方的接口测试工具
2. 实现方式
既然是做单元测试,首先我们需要在pom文件引入junit和spring-test两个依赖
<!--author:herbert wx:464884492-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${springVersion}</version>
<scope>test</scope>
</dependency>
然后在单元测试的代码中声明,我们需要做单元测试的servlet对象,单元测试类加载时实例化这个对象.
// author:herbert wx:464884492
public class DemoServletTest {
DemoServlet servlet = null;
@Before
public void setUp() {
servlet = new DemoServlet();
DOMConfigurator.configure("src/main/webapp/WEB-INF/log4j.xml");
}
}
再添加我们具体的测试方法,简单几句代码就完成了一个请求封装.
// author:herbert wx:464884492
@Test
public void testReqImg() throws ServletException, IOException, InterruptedException {
JSONObject p = new JSONObject();
p.put("demoRequest", "herbert 通过spring-test 测试servlet");
MockHttpServletRequest request = new MockHttpServletRequest();
request.setContent(p.toString().getBytes());
MockHttpServletResponse response = new MockHttpServletResponse();
servlet.doPost(request, response);
while (true) {
Thread.sleep(200);
}
}
其实现原理就是 MockHttpServletRequest 和 MockHttpServletResponse 分别实现了接口 HttpServletRequest 和 HttpServletResponse,一般情况下是,容器自动实现的.所以一般开发时不会注意具体的实现内容.如果感兴趣,完全可以自己实现这两个接口,完成单元测试.
3. 总结
知识虽小,重在积累.2020注定是不平凡的一年.加油!!
欢迎感兴趣的朋友关注我的订阅号“小院不小”,或点击下方二维码关注。我将多年开发中遇到的难点,以及一些有意思的功能,体会都会一一发布到我的订阅号中

Java Servlet单元测试的更多相关文章
- Java Servlet 技术简介
Java Servlet 技术简介 Java 开发人员兼培训师 Roy Miller 将我们现有的 servlet 介绍资料修改成了这篇易于学习的实用教程.Roy 将介绍并解释 servlet 是什么 ...
- 【Java】Java Servlet 技术简介
Java 开发人员兼培训师 Roy Miller 将我们现有的 servlet 介绍资料修改成了这篇易于学习的实用教程.Roy 将介绍并解释 servlet 是什么,它们是如何工作的,如何使用它们来创 ...
- java servlet 几种页面跳转的方法及传值
java servlet 几种页面跳转的方法及传值 java web 页面之间传值有一下这几种方式1.form 表单传递参数2.url地址栏传递参数3.session4.cookie5.appli ...
- Java Servlet与Web容器之间的关系
自从计算机软件开发进入网络时代,就开始涉及到通讯问题.在客户/服务器(也叫C/S应用)时期,每个软件都有自己的客户端和服务器端软件.并且客户端和服务器端之间的通讯协议差别也很大.后来随着互联网的发展, ...
- java servlet调用带有多个返回结果集的存储过程
一.mysql存储过程 这里我先说下我这个功能实现的逻辑及途中遇到的一些问题.这个存储过程一共带两个输入参数,一共关联到两张表的查询,每个参数都对应查询表中的一个判断,所以一共返回了两个结果集(当然要 ...
- java servlet+mysql全过程(原创)
前段时间写过一篇 servlet+oracle的文章,但是那是因为公司有可能接那么一个项目,然后我当时也比较闲,所以随便学了下,那玩意是白去研究了,因为公司后面并没接到那项目. 这次学servlet用 ...
- java servlet+oracle 新手可看
最近公司领导告诉接下去接的一个产品,可能会涉及到oracle数据库,以前用得最多的是mssql,前些时间学了下mysql也算少许用过.oracle没接触过.应为我之前做过.net开发,所以数据访问接口 ...
- Java Servlet完全教程
Servlet 是一些遵从Java Servlet API的Java类,这些Java类可以响应请求.尽管Servlet可以响应任意类型的请求,但是它们使用最广泛的是响应web方面的请求. Servle ...
- Java Servlet系列之Servlet生命周期
Servlet生命周期定义了一个Servlet如何被加载.初始化,以及它怎样接收请求.响应请求,提供服务.在讨论Servlet生命周期之前,先让我们来看一下这几个方法: 1. init()方法 在Se ...
- JAVA SERVLET专题(上)
SERVLET简介 ·Java Servlet 是和平台无关的服务器端组件,它运行在Servlet容器中.Servlet容器负责Servlet和客户的通信以及调用Servlet的方法,Servlet和 ...
随机推荐
- js中for in和for of详细讲解
for in的详细讲解, for in遍历数组的毛病 1.index索引为字符串型数字,不能直接进行几何运算. 2.遍历顺序有可能不是按照实际数组的内部顺序 3.使用for in会遍历数组[所有的可枚 ...
- 【k哥爬虫普法】非法入侵计算机信息系统,获取1500万余条个人信息!
我国目前并未出台专门针对网络爬虫技术的法律规范,但在司法实践中,相关判决已屡见不鲜,K 哥特设了"K哥爬虫普法"专栏,本栏目通过对真实案例的分析,旨在提高广大爬虫工程师的法律意识, ...
- 强化学习从基础到进阶-案例与实践[1]:强化学习概述、序列决策、动作空间定义、策略价值函数、探索与利用、Gym强化学习实验
强化学习从基础到进阶-案例与实践[1]:强化学习概述.序列决策.动作空间定义.策略价值函数.探索与利用.Gym强化学习实验 1.1 强化学习概述 强化学习(reinforcement learning ...
- LoopAndLoop【安卓逆向】
LoopAndLoop(阿里CTF) 首先是通用步骤 解压附件后发现是APK文件,打开jeb进行反编译,反编译结果如下: 可以看到程序自定了几个check函数,并且调用了自定义库"lhm&q ...
- Intel酷睿Ultra隆重登场:28W能效逆天!AI性能领先竞品5.4倍
作为Intel 1971年首款微处理器4004诞生以来变革幅度最大的产品,代号Meteor Lake的第一代酷睿Ultra今天终于正式发布了!相关笔记本.迷你机产品也会陆续发布上市. 有关于酷睿Ult ...
- Git企业开发控制理论和实操-从入门到深入(二)|Git的基本操作
前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助. 高质量博客汇总https://blog.cs ...
- tp使用workerman消息推送
安装 首先通过 composer 安装 composer require topthink/think-worker SocketServer 在命令行启动服务端 php think worker:s ...
- 制作包含最新更新的Windows 10 LTSC 2021 ISO
介绍 在制作桌面云windows 模板的时候,一般需要安装最新的更新.更新安装过程非常耗时,并且安装更新会导致桌面模板的磁盘空间膨胀.制作出的模板会占用很大的磁盘空间.如果不安装更新,模板大小约5G. ...
- CF1903
A 若 \(k>1\),冒泡排序:否则判断是否已经有序. B 初始令 \(a_i=2^{30}-1\),然后对于每个限制,让 \(a_i\leftarrow a_i\&M_{i,j},\ ...
- html知识概念(不含标签)
CS架构与BS架构 C/S架构 Client(客户端) / Server(服务器) 需要安装客户端使用,哔哩哔哩客户端.腾讯视频客户端等 需求安装.需要更新.不跨平台 B/S架构 Browser(浏览 ...