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

Spring MVC控制器JUnit测试相关推荐

  1. junit 测试mvc_Spring MVC控制器JUnit测试

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

  2. Spring MVC控制器的单元测试:“普通”控制器

    本教程的第一部分描述了如何配置使用Spring MVC Test框架的单元测试. 现在是时候动手做,学习如何为"常规"控制器编写单元测试了. 显而易见的下一个问题是: 什么是普通控 ...

  3. Spring MVC控制器的单元测试:REST API

    Spring MVC提供了一种创建REST API的简便方法. 但是,为这些API编写全面而快速的单元测试一直很麻烦. Spring MVC测试框架的发布使我们可以编写可读,全面且快速的单元测试. 这 ...

  4. Spring MVC控制器的单元测试:配置

    传统上,为Spring MVC控制器编写单元测试既简单又成问题. 尽管编写调用控制器方法的单元测试非常简单,但问题是这些单元测试不够全面. 例如,我们不能仅通过调用已测试的控制器方法来测试控制器映射, ...

  5. Spring Controller – Spring MVC控制器

    Spring Controller annotation is a specialization of @Component annotation. Spring Controller annotat ...

  6. 编写 Spring MVC 控制器的 14 个技巧

    欢迎关注方志朋的博客,回复"666"获面试宝典 通常,在Spring MVC中,我们编写一个控制器类来处理来自客户端的请求.然后,控制器调用业务类来处理与业务相关的任务,然后将客户 ...

  7. requestmapping默认是get还是post_编写Spring MVC控制器的14个技巧,你今天get到了吗?...

    Java面试笔试面经.Java技术每天学习一点 公众号Java面试 关注我不迷路 原文:http://dzone.com/articles/14-tips-for-writing-spring-mvc ...

  8. 吐血整理!14个编写Spring MVC控制器的实用小技巧

    全文共4248字,预计学习时长9分钟 编写Spring MVC控制器的最佳技巧 本文介绍了编写Spring MVC框架的控制器(controller)的基础技巧和最佳操作.在Spring MVC框架中 ...

  9. Spring MVC实现Junit Case

    Spring MVC中编写单元测试(WEB项目): 1. 首先开发一个基类,用于载入配置文件.以下所有的测试实现类都要继承这个类 Java代码   package com.yusj.basecase; ...

最新文章

  1. 输入今天是星期几的序号,给今天和昨天赋予枚举值,并输出昨天是星期几的枚举值
  2. 子集和的目标值(codevs 1692)
  3. MODE —— 输入一个数字,求从1加到该数的和(知识点:for循环嵌套while循环)
  4. 独家下载 |《领军行业大数据及AI实战》解锁九大行业领军企业云上大数据及AI实战
  5. Java数据库篇8——索引、视图、存储过程、触发器
  6. 2016级算法期末模拟练习赛-B.AlvinZH的青春记忆I
  7. hasCode in Java
  8. 生产订单“生产线别”带入生产入库单
  9. report machine实现报表分栏
  10. 女程序员年薪45万外加两套房,一日相亲两次,网友:找得到才怪
  11. 几点个人信息安全感受
  12. Android竖虚线绘制
  13. 【C语言】请将1至7中的任意一个数字转化成对应的英文星期几的前三个字母,如1转化为Mon,7转化为Sun等。 个人解答
  14. (转)双线性汇合(bilinear pooling)在细粒度图像分析及其他领域的进展综述
  15. UCOSⅢ 任务管理
  16. DRF之View、APIView以及GenericAPIView
  17. 市场调研报告-全球与中国自动结账软件市场现状及未来发展趋势
  18. 游览器缓存和数据压缩
  19. “空头”突袭瑞幸 浑水再次折戟?
  20. 始于关注,终于热爱。

热门文章

  1. 本地java【动态监听】zk集群节点变化
  2. java本地创建zk节点
  3. 如何评价分类模型性能?(足球荔枝)
  4. MySQL存储过程+游标+触发器
  5. java泛型程序设计——约束与局限性
  6. java api 开发_Java开发人员应该知道的前20个库和API
  7. java性能监视_Java 9和应用程序性能监视的激动人心之处
  8. java cr_WildFly 10 CR 2发布– Java EE 7,Java 8,Hibernate 5,JavaScript支持热重载
  9. 只针对异常的情况才使用异常_如何以及何时使用异常
  10. saml2_向SAML响应中添加自定义声明–(如何为WSO2 Identity Server编写自定义声明处理程序)...