(Portal 开发读书笔记)Spring Portlet MVC 测试Controller

简介:

 测试Spring Portlet MVC 中的Controller有两种方法,一种是用mock对象,一种是用TestContext框架

测试1:用mock 对象测试Controller。我们把所有Controller用到或者依赖的对象全部mock掉。

 
 
  1. public class AddBookControllerTest { 
  2. //这是被测试的Controller类的实例
  3. private AddBookController addBookController; 
  4. //因为Controller依赖某些Service,所以我们创造这些Service的mock对象
  5. private BookService bookService= new MockBookService(); 
  6.  
  7. @Before 
  1. public void setUp() { 
  2. addBookController = new AddBookController(); 
  3. addBookController.setBookService(bookService); 
  4.  
  5. @Test 
  6. public void testShowAddBookForm() { 
  7. //这个测试用例测试一个render方法
  8. //我们首先创造一个RenderResponse的mock对象
  9. //调用mock对象上的被测试的方法并且比较返回值
  10. RenderResponse response = new MockRenderResponse(); 
  11. assertEquals("addBookForm"
  12. addBookController.showAddBookForm(response)); 
  13.  
  14. @Test 
  15. public void testAddBook() { 
  16. //这个测试用例测试一个action方法
  17. Book book = new Book("test book""test author", 1234567890L); 
  18. MockActionResponse response = new MockActionResponse(); 
  19. //我们调用被测试的方法,让它加入一本书
  20. addBookController.addBook(book, 
  21. new BindException(book, "book"), response, 
  22. new SimpleSessionStatus()); 
  23. //比较结果
  24. assertNotNull(bookService.getBook(1234567890L)); 
  25. assertEquals("books", response.getRenderParameter("myaction")); 

 

测试2:我们用TestContext框架来进行测试。

 

 
 
  1. //@RunWith用来指定运行这些测试的Runner
  2. @RunWith(SpringJUnit4ClassRunner.class
  3. //@ContextConfiguration用来指定运行这些测试所用到的Spring应用上下文
  4. @ContextConfiguration
  5. locations="classpath:bookCatalogTest-portlet.xml" 
  6. @TestExecutionListeners(value = 
  7. { DependencyInjectionTestExecutionListener.class } 
  8. public class AddBookControllerTestContext extends 
  9. AbstractJUnit4SpringContextTests { 
  10. @Autowired 
  11. @Qualifier("addBookController"
  12. private AddBookController addBookController; 
  13. @Autowired 
  14. @Qualifier("myBookService"
  15. private BookService bookService; 
  16. @Autowired 
  17. private Validator validator; 
  18. @Test 
  19. public void testShowAddBookForm() { 
  20. RenderResponse response = new MockRenderResponse(); 
  21. assertEquals("addBookForm"
  22. addBookController.showAddBookForm(response)); 
  23. ... 
  24. @Test 
  25. public void testBook() { 
  26. Set<ConstraintViolation<Book>> violations = 
  27. validator.validate(new Book()); 
  28. int[] actual = {violations.size()}; 
  29. int[] expected = {4}; 
  30. assertArrayEquals(expected, actual); 




本文转自 charles_wang888 51CTO博客,原文链接:http://blog.51cto.com/supercharles888/845940,如需转载请自行联系原作者

目录
相关文章
|
1天前
|
Java 测试技术 API
Spring Boot 单元测试 0基础教程
Spring Boot 单元测试 0基础教程
8 0
|
2天前
LabVIEW编程LabVIEW开发防护时间测试仪
LabVIEW编程LabVIEW开发防护时间测试仪
|
2天前
|
传感器
LabVIEW编程LabVIEW开发控制PACE1000精密压力测试仪例程与相关资料
LabVIEW编程LabVIEW开发控制PACE1000精密压力测试仪例程与相关资料
|
2天前
|
传感器 编解码 算法
2021-07-20LabVIEW编程LabVIEW开发 控制Dantec 激光多普勒测试仪LDV例程与相关资料
2021-07-20LabVIEW编程LabVIEW开发 控制Dantec 激光多普勒测试仪LDV例程与相关资料
|
2天前
|
传感器 编解码
LabVIEW编程LabVIEW开发 控制RITEC RAM-5000 SNAP非线性高能超声测试系统例程与相关资料
LabVIEW编程LabVIEW开发 控制RITEC RAM-5000 SNAP非线性高能超声测试系统例程与相关资料
|
3天前
|
前端开发 安全 Java
使用Spring框架加速Java开发
使用Spring框架加速Java开发
5 0
|
4天前
|
传感器 人工智能 前端开发
JAVA语言VUE2+Spring boot+MySQL开发的智慧校园系统源码(电子班牌可人脸识别)Saas 模式
智慧校园电子班牌,坐落于班级的门口,适合于各类型学校的场景应用,班级学校日常内容更新可由班级自行管理,也可由学校统一管理。让我们一起看看,电子班牌有哪些功能呢?
45 4
JAVA语言VUE2+Spring boot+MySQL开发的智慧校园系统源码(电子班牌可人脸识别)Saas 模式
|
11天前
|
Java 测试技术 Maven
Spring Boot单元测试报错java.lang.IllegalStateException: Could not load TestContextBootstrapper [null]
Spring Boot单元测试报错java.lang.IllegalStateException: Could not load TestContextBootstrapper [null]
|
11天前
|
缓存 监控 前端开发
【Flutter前端技术开发专栏】Flutter应用的性能调优与测试
【4月更文挑战第30天】本文探讨了Flutter应用的性能调优策略和测试方法。性能调优对提升用户体验、降低能耗和增强稳定性至关重要。优化布局(避免复杂嵌套,使用`const`构造函数)、管理内存、优化动画、实现懒加载和按需加载,以及利用Flutter的性能工具(如DevTools)都是有效的调优手段。性能测试包括基准测试、性能分析、压力测试和电池效率测试。文中还以ListView为例,展示了如何实践这些优化技巧。持续的性能调优是提升Flutter应用质量的关键。
【Flutter前端技术开发专栏】Flutter应用的性能调优与测试
|
11天前
|
前端开发 测试技术 持续交付
【Flutter 前端技术开发专栏】Flutter 中的 UI 测试与自动化测试
【4月更文挑战第30天】本文探讨了 Flutter 应用中UI测试和自动化测试的重要性,包括保障质量、提高效率和增强开发信心。Flutter提供`flutter_test`库进行Widget测试,以及`flutter_driver`进行集成测试。UI测试涵盖界面布局、交互和状态变化的验证,最佳实践建议尽早引入测试、保持用例简洁,并结合手动测试。未来,随着Flutter技术发展,UI测试和自动化测试将更加完善,助力开发高质量应用。
【Flutter 前端技术开发专栏】Flutter 中的 UI 测试与自动化测试