Controller
@Controller
public class DataSourceService {
@RequestMapping(value = "/bb/aa/{dataSource}", method = RequestMethod.GET)
public void datasource(HttpServletRequest request, HttpServletResponse response,
@PathVariable("dataSource") String dataSource) throws Exception {
String result = "结果为";
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.write(result + dataSource);
out.close();
}
}
测试的基类
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.junit.BeforeClass;
import org.springframework.mock.web.MockServletContext;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.XmlWebApplicationContext;
import org.springframework.web.servlet.HandlerAdapter;
import org.springframework.web.servlet.HandlerExecutionChain;
import org.springframework.web.servlet.HandlerMapping;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter;
import org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping;
/**
* @ClassName: JUnitActionBase
* @Description: 这里用一句话描述这个类的作用
*
*/
public class JUnitActionBase {
private static HandlerMapping handlerMapping;
private static HandlerAdapter handlerAdapter;
/**
* 读取spring3 MVC配置文件
* @throws UnsupportedEncodingException
*/
@BeforeClass
public static void setUp() throws UnsupportedEncodingException {
if (handlerMapping == null) {
File file = new File(Thread.currentThread().getContextClassLoader().getResource("").getPath());
String separator = File.separator;
String path = URLDecoder.decode(file.getAbsolutePath(), "utf-8").replace("", "").replace("\\", "/");
String[] configs = { "file:" + path + separator + "hy-spring-servlet.xml",
"file:" + path + separator + "hy-spring.xml" };
XmlWebApplicationContext context = new XmlWebApplicationContext();
context.setConfigLocations(configs);
MockServletContext msc = new MockServletContext();
context.setServletContext(msc);
context.refresh();
msc.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, context);
handlerMapping = (HandlerMapping) context.getBean(DefaultAnnotationHandlerMapping.class);
handlerAdapter = (HandlerAdapter) context.getBean(context
.getBeanNamesForType(AnnotationMethodHandlerAdapter.class)[0]);
}
}
/**
* 执行request对象请求的action
*
* @param request
* @param response
* @return
* @throws Exception
*/
public ModelAndView excuteAction(HttpServletRequest request, HttpServletResponse response) throws Exception {
HandlerExecutionChain chain = handlerMapping.getHandler(request);
final ModelAndView model = handlerAdapter.handle(request, response, chain.getHandler());
return model;
}
}
测试类
public class DataSourceServiceTest extends JUnitActionBase {
@Test
public void testJSONDataSourceServiceSQL() throws Exception {
MockHttpServletRequest request = new MockHttpServletRequest();
MockHttpServletResponse response = new MockHttpServletResponse();
request.setRequestURI("/bb/aa/hehe");
request.addParameter("P_RQ", "2011-11-29");
request.setMethod("GET");
// 执行URI对应的action
this.excuteAction(request, response);
String result = response.getContentAsString();
Assert.assertNotNull(result);
}
}
分享到:
相关推荐
这篇博客主要探讨了如何使用JUnit进行Spring MVC Controller的单元测试。在实际开发中,单元测试可以帮助我们尽早发现潜在的问题,提高软件的可靠性和可维护性。 首先,让我们了解Spring MVC的基本概念。Spring MVC...
总结来说,使用JUnit针对Spring MVC的三层进行测试,我们需要: 1. 测试表现层(Controller),验证HTTP请求处理和视图渲染。 2. 测试业务层,确保业务逻辑的正确性和依赖隔离。 3. 测试服务数据访问层,验证数据库...
JUnit作为Java领域最流行的单元测试框架,与Spring MVC和Spring Boot的集成使得开发者能够更高效地进行测试驱动开发(TDD)或行为驱动开发(BDD)。下面将详细介绍这个主题中的相关知识点。 1. JUnit JUnit是一个...
Spring MVC 是一个强大的Java web开发框架,用于构建可维护、可扩展的...总之,通过正确使用JUnit、Mockito、Spring Test以及MockMVC,我们可以编写出全面、有效的Spring MVC单元测试,确保代码质量并降低潜在的bug。
十三、如何给Spring3 MVC中的Action做JUnit单元测试:说明了如何对Spring MVC中的控制器进行单元测试,包括配置测试环境和编写测试代码。 十四、Spring MVC转发与重定向:详细讲解了在Spring MVC中如何使用转发和...
13. **测试Spring MVC应用**:理解如何编写JUnit测试用例,使用MockMVC模拟HTTP请求,以及进行集成测试。 14. **Spring Security**:如果书中涉及,会讲解如何集成Spring Security进行身份验证和授权,保护应用程序...
10. **单元测试和集成测试**:学习如何使用JUnit和Mockito等工具对Controller和Service层进行单元测试,以及使用Spring Test对整个应用进行集成测试。 通过这个简单的例子,初学者可以全面地了解Spring MVC的工作...
在本项目中,我们主要利用Spring框架,包括其核心模块Spring、MVC模块Spring MVC以及数据访问/集成模块Spring JDBC,结合MySQL数据库来构建一个基础的登录注册系统。以下是这个项目涉及的关键技术点: 1. **Spring...
- 单元测试:使用JUnit和Mockito测试Controller、Service和DAO层的功能。 总之,《Spring MVC与MYBatis企业应用实战》将引导读者深入理解这两种技术的结合,提供实际项目中的解决方案,帮助开发者在企业级应用开发...
9. **测试**:为了保证代码质量,项目可能包含单元测试和集成测试,使用JUnit、Mockito等工具对用户模块的功能进行验证。 通过这个“spring mvc demo加用户模块的”项目,开发者可以学习如何组织Spring MVC的项目...
Spring MVC是Spring框架的一部分,是一个用于构建Web应用的轻量级MVC(Model-View-Controller)框架。它提供了模型绑定、数据验证、RESTful支持、异常处理等特性,帮助开发者更有效地组织和管理控制器逻辑。Spring ...
10. **测试**:Spring提供了JUnit支持,可以方便地对Service和Controller进行单元测试,确保代码质量。 以上就是Spring与Spring MVC整合配置的一些基础知识,实际应用中还需要考虑安全性、性能优化等因素。通过不断...
#### 十三、JUnit 单元测试 Spring MVC 控制器 为了确保控制器的正确性,可以编写 JUnit 测试用例来进行单元测试。通常会使用 Spring Test 模块提供的 `MockMvc` 类来模拟 HTTP 请求,并验证控制器的行为。 #### ...
10. 测试:编写JUnit测试类,对Service层的增删改查方法进行单元测试,确保功能正常。 总结,Spring MVC、MyBatis与Maven的整合能够帮助开发者高效地构建Web应用,通过Maven管理项目依赖,Spring MVC负责请求分发和...
3. **JUnit**:单元测试框架,测试控制器、Service 和 DAO。 4. **H2/MySQL**:数据库,用于存储和查询数据。 5. **Postman**:HTTP 客户端,用于发送请求和验证响应。 ### 五、源码分析 1. **Controller**:观察 ...
7. **单元测试和集成测试**:查看项目中的测试类,学习如何使用JUnit和Mockito进行测试。 通过深入研究这个Spring MVC demo,你将能掌握基本的Spring MVC工作流程,为后续更复杂的Web应用开发打下坚实基础。记得...
可以使用 MockMVC 进行 Spring MVC 的模拟测试,对于 Mybatis,可以通过 JUnit 和 Mockito 测试数据库操作。 通过这种整合,开发者可以在 Spring MVC 的控制层直接注入 Mybatis 的 DAO 对象,简化了代码的编写,...
在实际开发中,可能还需要根据项目需求添加其他库,如测试框架(JUnit、Mockito)、缓存框架(Ehcache、Redis)、消息队列(RabbitMQ、Kafka)等。在使用Maven或Gradle等构建工具时,可以通过指定对应的依赖坐标自动...
**Spring MVC** 是Spring框架的一部分,主要用于构建Web应用程序的Model-View-Controller(MVC)架构。Spring MVC通过解耦控制器、服务、模型和视图,使得代码更易于维护和测试。在本系统中,它负责处理HTTP请求,...