Spring 单元测试

1,引入Spring测试jarspring-test-4.1.6.RELEASE

2,单元测试Service如下:

  1. package com.order.service;
  2. import org.junit.Test;
  3. import org.junit.runner.RunWith;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.test.context.ContextConfiguration;
  6. import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
  7. import org.springframework.transaction.annotation.Transactional;
  8. import com.jutudi.common.result.GridResult;
  9. import com.jutudi.order.dao.pojo.OrderBuyer;
  10. import com.jutudi.order.service.OrderBuyerService;
  11. @RunWith(SpringJUnit4ClassRunner.class)
  12. @ContextConfiguration("classpath:spring/applicationContext*.xml")
  13. @Transactional
  14. publicclassOrderBuyerServiceTest{
  15. @Autowired
  16. privateOrderBuyerService service;
  17. @Test
  18. publicvoid testQueryAll()throwsException{
  19. GridResult<OrderBuyer> grid = service.querySellOrders(newOrderBuyer(),1,10);
  20. System.out.println("测试"+ grid.toString());
  21. }
  22. }

3,单元测试Controller

?具体内容,参考官方文档:

http://docs.spring.io/spring/docs/3.2.13.RELEASE/spring-framework-reference/htmlsingle/#spring-mvc-test-framework

http://www.cnblogs.com/naruto469/p/4087821.html  出错后参考博客

  1. /**
  2. * 此处必须引入,否则报错status() get() 方法找不到
  3. */
  4. importstatic org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
  5. /**
  6. * 此处必须引入,否则报错status() get() 方法找不到
  7. */
  8. importstatic org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
  9. import org.junit.Before;
  10. import org.junit.Test;
  11. import org.junit.runner.RunWith;
  12. import org.slf4j.Logger;
  13. import org.slf4j.LoggerFactory;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.http.MediaType;
  16. import org.springframework.test.context.ContextConfiguration;
  17. import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
  18. import org.springframework.test.context.web.WebAppConfiguration;
  19. import org.springframework.test.web.servlet.MockMvc;
  20. import org.springframework.test.web.servlet.MvcResult;
  21. import org.springframework.test.web.servlet.result.MockMvcResultHandlers;
  22. import org.springframework.test.web.servlet.setup.MockMvcBuilders;
  23. import org.springframework.web.context.WebApplicationContext;
  24. import org.springframework.web.servlet.config.annotation.EnableWebMvc;
  25. //@RunWith(SpringJUnit4ClassRunner.class)
  26. //@ContextConfiguration("classpath:spring/applicationContext*.xml")
  27. //@EnableWebMvc
  28. //@WebAppConfiguration
  29. @RunWith(SpringJUnit4ClassRunner.class)
  30. @WebAppConfiguration
  31. @ContextConfiguration("classpath:spring/applicationContext*.xml")
  32. @EnableWebMvc
  33. publicclassAppFundControllerTest{
  34. @Autowired
  35. privateWebApplicationContext wac;
  36. privateMockMvc mockMvc;
  37. privatestaticfinalLogger log =LoggerFactory.getLogger(AppFundControllerTest.class);
  38. @Before
  39. publicvoid setup()throwsException{
  40. this.mockMvc =MockMvcBuilders.webAppContextSetup(this.wac).build();
  41. // this.mockMvc = MockMvcBuilders.standaloneSetup(new AppFundController()).build();
  42. }
  43. @Test
  44. publicvoid testReceive()throwsException{
  45. // 1、mockMvc.perform执行一个请求;
  46. // 2、MockMvcRequestBuilders.get("/user/1")构造一个请求
  47. // 3、ResultActions.andExpect添加执行完成后的断言
  48. // 4、ResultActions.andDo添加一个结果处理器,表示要对结果做点什么事情,比如此处使用MockMvcResultHandlers.print()输出整个响应结果信息。
  49. // 5、ResultActions.andReturn表示执行完成后返回相应的结果。
  50. // MvcResult result =
  51. // mockMvc.perform(MockMvcRequestBuilders.get("/jutudiApp/appfindtopfundclass.html"))
  52. // // .andExpect(MockMvcResultMatchers.view().name("user/view"))
  53. // // .andExpect(MockMvcResultMatchers.model().attributeExists("user"))
  54. // // .andDo(MockMvcResultHandlers.print())
  55. // .andReturn();
  56. MvcResult result =this.mockMvc
  57. .perform(get("/jutudiApp/appfindtopfundclass.html").accept(MediaType.ALL).param("id","256"))
  58. .andExpect(status().isOk()).andDo(MockMvcResultHandlers.print()).andReturn();
  59. log.debug("查询结果: "+ result.getResponse().getHeader("Content-Type"));
  60. }
  61. }

来自为知笔记(Wiz)

时间: 2024-10-15 09:53:57

Spring 单元测试的相关文章

Spring 单元测试的学习

单元测试和集成测试在我们的软件开发整个流程中占有举足轻重的地位,一方面,程序员通过编写单元测试来验证自己程序的有效性,另外一方面,管理者通过持续自动的执行单元测试和分析单元测试的覆盖率等来确保软件本身的质量.这里,我们先不谈单元测试本身的重要性,对于目前大多数的基于 Java 的企业应用软件来说,Spring 已经成为了标准配置,一方面它实现了程序之间的低耦合度,另外也通过一些配置减少了企业软件集成的工作量,例如和 Hibernate.Struts 等的集成.那么,有个问题,在普遍使用 Spri

Spring错误——Spring 单元测试——Test class should have exactly one public constructor

背景:Spring 构建单元测试 错误 java.lang.Exception: Test class should have exactly one public constructor at org.junit.runners.BlockJUnit4ClassRunner.validateOnlyOneConstructor(BlockJUnit4ClassRunner.java:131) at org.junit.runners.BlockJUnit4ClassRunner.validat

Spring 单元测试 RequestContextHolder.getRequestAttributes()).getRequest(); 为空的原因

原因是因为单元测试时没有加载 web.xml 中的: <!-- spring在service层获取session和request需要创建的监听器 --> <listener> <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> </listener> 所以单元测试时如果需要用到 request 中的值的话,就

SpringBug记录 -- java.lang.NullPointerException在Spring单元测试中遇到的空指针异常及依赖注入异常总结

在进行SSM整合过程中遇到了空指针异常以及依赖注入异常,分别说一下. 1.空指针异常: 在进行单元测试时,发现在Controller层出现空指针异常.然后单独测试Service层,发现空指针异常到了Service层.后来发现,原来我在Test方法中New了一个新的Service.导致空指针异常,由于Ioc机制,Spring已经自动帮我们注入了这个变量,所以重新声明的话会导致空指针异常(果然基础还是不够扎实哈哈,长记性了) 2.依赖注入失败异常. 在启动tomcat时,发现Tomcat报异常,无法

Spring单元测试利器 -- testng

TESTNG使Java单元测试轻而易举 深入了解testng,请访问:http://www.yiibai.com/html/testng/2013/0914295.html 在每个软件包的构造阶段,测试阶段都扮演扮演者中心角色.过去那种先编译再测试的日子已经一去不去不返,现在大多数开发人员现在认识到需要采用编码和测试彼此交织.同步推进的软件方法论,以便尽早发现bug,在开发过程开始的时候就识别出风险. TESTNG快速进阶 1.TestNG概述 TestNG是一种基于注解的测试框架,通过添加诸如

spring单元测试

今天重新写了次Spring的测试,经过一番努力,还是成功的运行了的.下面记录下写作过程以及修改历程. 首先,自己的项目有些不完整,所以中间有许多很小的bug,也在此记录下过程: 由于自己重新生成的mybaits文件没有及时更新到项目里,所以在一开始的时候,解决这些小问题 其次,自己没有正确处理手机号码的数据类型,从而使得在运行过程中出了一个该问题! 下面记录下自己的测试文件代码 1 package com.blog.test; 2 3 import org.junit.Test; 4 impor

spring单元测试的基本配置

@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "classpath:trade.application.xml" }) public class BaseTest { } 原文地址:https://www.cnblogs.com/assasion/p/9221110.html

Spring之单元测试

引言 是否在程序运行时使用单元测试是衡量一个程序员素质的一个重要指标.使用单元测试既可以让我检查程序逻辑的正确性还可以让我们减少程序测试的BUG,便于调试可以提高我们写程序的效率.以前我们做单元测试的时候使用的都是JUnit,只需要引入相关的jar包即可.可是我们在使用Spring的时候是不是也可以使用单元测试呢,答案是肯定的.Spring自己整合了JUint,极大的方便了我们的程序开发. 1.引入相关环境 如果我们想要使用Spring提供的单元测试功能,我们除了引入Spring的相关环境我们还

spring集成Junit做单元测试及常见异常解决办法

spring-test依赖包 <!--Spring-test --> <!-- https://mvnrepository.com/artifact/org.springframework/spring-test --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version&g