Spring MVC控制器JUnit测试

JUnit测试Spring MVC控制器并非易事 。 但是最近,一个新项目 (即将在Spring推出)提供了新工具来简化此工作。 这篇文章说明了如何通过JUnit测试来测试一个简单的控制器。

该代码是JUnit Testing Spring Service和DAO(带有内存数据库)中使用的代码的变体。 可从Spring-MVC-JUnit-Testing目录中的Gihut获得。

测试配置类

这些与Service和DAO测试所需的相同。

控制者

我们的控制器:

@Controller
public class MyController {@Autowiredprivate MyService myService;@RequestMapping(value = '/')public String home(Model model) {return 'index';}@RequestMapping(value = '/roundtrip')public String persistenceStatus(Model model) {MilliTimeItem retr = myService.createAndRetrieve();model.addAttribute('RoundTrip', retr);return 'roundtrip';}}


控制器测试

下面创建一个MockMvc实例来测试模拟的用户请求:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes={ JpaTestConfig.class, TestConfig.class })
public class MyControllerTest {private MockMvc mockMvc;@Beforepublic void setup() {mockMvc = MockMvcBuilders.annotationConfigSetup(JpaTestConfig.class, TestConfig.class).build();}@Testpublic void testHome() throws Exception {mockMvc.perform(get('/')).andExpect(status().isOk()).andExpect(forwardedUrl('WEB-INF/pages/index.jsp'));}@Testpublic void testPersistenceStatus() throws Exception {mockMvc.perform(get('/roundtrip')).andExpect(status().isOk()).andExpect(forwardedUrl('WEB-INF/pages/roundtrip.jsp')).andExpect(model().attributeExists('RoundTrip'));}}

/请求测试返回的状态以及到JSP页面的URL映射。 / roundtrip请求确保返回的模型确实包含Roundtrip属性。

依存关系

Spring MVC测试工件尚无法从maven的中央存储库中获得。 它应该从另一个存储库获得:

<repositories><repository><id>spring.test-mvc</id><url>http://repo.springsource.org/libs-milestone</url></repository></repositories>

所需的依赖项是:

<dependency><groupId>org.springframework</groupId><artifactId>spring-test-mvc</artifactId><version>1.0.0.M1</version><scope>test</scope>
</dependency>
<dependency><groupId>org.hamcrest</groupId><artifactId>hamcrest-library</artifactId><version>1.3</version><scope>test</scope>
</dependency>

更多春天相关的帖子在这里 。

参考: 技术说明博客上的JCG合作伙伴 Jerome Versrynge提供的Spring MVC Controller JUnit Testing 。


翻译自: https://www.javacodegeeks.com/2012/10/spring-mvc-controller-junit-testing.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/371452.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java基础03变量和基本数据类型

package cn.bdqn.test;/*** * author 小豆腐* * 变量&#xff1a;会变化的量&#xff1f;&#xff1f;* 一个数据在内存中存储空间的表示&#xff01;在运行期间可以动态改变&#xff01;* * 关键字:在java中已经被使用或者定义的单词&#xff01;不能作为变量名&#xff01…

5.set集合

list_1 [1,2,3,4,5]list_2 [1,3,5,7,9]#列表转成set集合set_1 set(list_1)set_2 set(list_2)#交集print(set_1.intersection(set_2))print(set_1 & set_2)#判断没有交集print(set(["a","b"]).isdisjoint(set_1))#并集print(set_1.union(set_2))pri…

JavaFX中基于表达式的PathTransitions

在JavaFX中&#xff0c;您可以使用PathTransition对象为路径上的节点设置动画。 PathTransitions使用Shape对象描述它们需要沿其动画的路径。 JavaFX提供了各种类型的形状&#xff08;例如&#xff0c;多边形&#xff0c;圆形&#xff0c;多边形&#xff0c;路径&#xff09;。…

html 显示视频列表,dvd光碟制作节目轨菜单布局,不要视频缩略图,只显示文件列表...

“如何在刻录视频光盘时自定义制作菜单&#xff1f;实现的效果就是当光盘插入DVD影碟机播放时&#xff0c;首先会出现一个所有视频文件列表的菜单(节目轨菜单)&#xff0c;就相似于音乐CD曲目表一样&#xff0c;不需要有视频缩略图&#xff0c;可通过遥控器选择性播放列表中某一…

v3学院教你学习-task和function的异同

v3学院教你学习-task和function的异同 task&#xff08;任务&#xff09;与function&#xff08;函数&#xff09;的不同 任务与函数主要有以下四点不同&#xff1a; l 函数只能与主模块共用一个仿真时间单位&#xff0c;而任务定义自己的仿真时间单位。 l 函数不能启动任务&am…

Spring事件的观察者模式

介绍 观察者模式的本质是“定义对象之间的一对多依赖关系&#xff0c;以便当一个对象改变状态时&#xff0c;其所有依赖关系都会得到通知并自动更新。” GoF。 观察者模式是发布/订阅模式的子集&#xff0c;它允许许多观察者对象查看事件。 可以在不同的情况下使用此模式&#…

jQuery选择什么版本 1.x? 2.x? 3.x?

目前jQuery有三个大版本&#xff1a; 1.x&#xff1a;兼容ie678,使用最为广泛的&#xff0c;官方只做BUG维护&#xff0c;功能不再新增。因此一般项目来说&#xff0c;使用1.x版本就可以了&#xff0c;最终版本&#xff1a;1.12.4 (2016年5月20日)2.x&#xff1a;不兼容ie678&a…

Delta DVP 系列 PLC 各装置 Modbus 地址

此Modbus地址表以 1 为基础地址 Device Range Type DVP address (Hex) Modbus address (Dec) Effective ES/EX/SS SA/SX/SC EH S 000~255 bit 0000~00FF 000001~000256 0~127 0~1024 0~1024 S 256~511 bit 0100~01FF 000247~000512 S 512~767 bit 020…

Reporting Service 2008 “报表服务器数据库内出错。此错误可能是因连接失败、超时或数据库中磁盘空间不足而导致的”...

今天遇到了两个关于Reporting Service的问题&#xff0c; 出现问题的环境为Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64) 。具体情况请见下面描述。 1&#xff1a;在修改报表的订阅后&#xff0c;保存时出现下面错误&#xff1a; 提示&#xff1a;报表服务器数据库…

Java 7:HashMap与ConcurrentHashMap

从我过去有关性能的文章和HashMap案例研究中可能已经看到&#xff0c;Java线程安全性问题可以很轻松地使Java EE应用程序和Java EE容器崩溃。 在对Java EE性能问题进行故障排除时&#xff0c;我观察到的最常见问题之一是由非线程安全的HashMap get&#xff08;&#xff09;和pu…

计算机网络按信息传输介质的性能来划分,大学计算机基础练习题网络技术.doc...

网络技术一、单选&#xff1a;1. 在计算机网络中&#xff0c;表征数据传输可靠性的指标是( )。A?误码率 B?频带利用率C?信道容量 D?传输速率参考答案&#xff1a;A2. 和通信网络相比&#xff0c;计算机网络最本质的功能是( )。A?数据通信 B?资源共享C?提高计算机的可靠性…

【2017-03-02】集合、结构体、枚举

集合和数组的差别&#xff1a; 数组&#xff1a;同一类型&#xff0c;固定长度集合&#xff1a;不同类型&#xff0c;不固定长度 一、普通集合&#xff08;弱类型&#xff09; 1、ArryList 使用集合首先要引用命名空间。 或者在ArryList上右键找“解析”。 2、集合的定义&#…

Hibernate懒/急加载示例

这篇文章将重点讨论为什么以及如何在应用程序中使用称为LAZY和EAGER加载的概念&#xff0c;以及如何使用Spring的休眠模板以EAGER方式加载LAZY实体。 当然&#xff0c;正如标题本身所暗示的那样&#xff0c;我们将通过一个示例来说明这一点。 场景就是这样&#xff1b; 您是一…

读者使用计算机终端是指,全国2010年10月自学考试管理系统中计算机应用真题及答案...

A.上级模块向下级模块传递控制信号B.下级模块对上级模块传递控制信号C.同级模块之间传递数据或控制信号D.上级模块向下级模块传递数据信号18.“客户”数据表结构为&#xff1a;客户编号、手机号、购物金额&#xff0c;合理的字段类型为( )A.字符型&#xff0c;字符型&#xff0…

软件测试HW02-------fault error failure

程序一 问题一&#xff1a;i应该>0&#xff1b; 问题二&#xff1a; x为空 问题三&#xff1a;test x[2, 3, 5]; y 3;问题四:test: x[2]; y 3&#xff1b;程序二问题一&#xff1a;循环应该反过来;问题二&#xff1a;无;问题三&#xff1a;test:x[1];问题四:test: x[1,2,3…

Mathematica图片局部变色

这篇博客来源于Stack-Exchange上的一个帖子&#xff0c;问题描述如下&#xff1a;如何将图中的红球变为蓝球&#xff1f; 这个问题下面有很多答案&#xff0c;我选了最好的一个答案&#xff0c;代码如下 img Import["C:/Users/1/Desktop/red.jpg"]; getReds[x_Image…

在WebLogic 12c上运行RichFaces

我最初以为我可以在几个月前写这篇文章。 但是我最终被不一样的事情所淹没。 其中之一是&#xff0c;它无法像我在4.0版本中那样简单地启动RichFaces展示柜。 有了所有的JMS magic和不同的提供者检查&#xff0c;这已经成为简单构建和部署它的挑战。 无论如何&#xff0c;我愿意…

Spring Boot系列教程一:Eclipse安装spring-tool-suite插件

一.前言 一直使用eclipse&#xff0c;个人习惯选用Eclipsespring-tool-suite进行开发&#xff0c;特别注意Eclipse要选用对应的spring-tool-suite进行安装&#xff0c;这点笔者浪费了好长时间&#xff0c;以下为对应的版本。eclipse-kepler.4.3.1–>springsource-tool-suite…

湖南工程学院计算机网络考试,湖南工程学院 计算机网络期末试卷试题

湖南工程学院 计算机网络期末试卷试题湖南工程学院 计算机网络 期末试题(计算机10级&#xff0c;90%的题目)1 从逻辑功能上看,计算机网络可分为哪两个子网?答&#xff1a;通信子网和资源子网 2 数据链路层的最基本功能答&#xff1a;数据链路层的最基本的功能是向该层用户提供…

C#设计模式(11)——外观模式(Facade Pattern)

一、引言 在软件开发过程中&#xff0c;客户端程序经常会与复杂系统的内部子系统进行耦合&#xff0c;从而导致客户端程序随着子系统的变化而变化&#xff0c;然而为了将复杂系统的内部子系统与客户端之间的依赖解耦&#xff0c;从而就有了外观模式&#xff0c;也称作 ”门面“…