新建一个基类:
package test;
/**
*
*/
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.junit.Before;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
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;
/**
* @author zbb
*
*/
public class BaseTest<T> {
public XmlWebApplicationContext ctx;
private HandlerMapping handlerMapping;
private HandlerAdapter handlerAdapter;
/**
* 容器初始化
*
* @author zbb
* @throws Exception
*/
@Before
public void setUp() throws Exception {
// change by xiaokang.zh
String[] paths = { "file:WebContent/WEB-INF/temp-servlet.xml" };
ctx = new XmlWebApplicationContext();
ctx.setConfigLocations(paths);
MockServletContext msc = new MockServletContext();
ctx.setServletContext(msc);
ctx.refresh();
msc.setAttribute(
WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE,
ctx);
handlerMapping = (HandlerMapping) ctx
.getBean(DefaultAnnotationHandlerMapping.class);
handlerAdapter = (HandlerAdapter) ctx.getBean(ctx
.getBeanNamesForType(AnnotationMethodHandlerAdapter.class)[0]);
}
/**
* 获取spring 的bean
*
* @author zbb
* @param cl
* @param name1
* @return
* @throws Exception
*/
@SuppressWarnings("unchecked")
protected T getBean(Class<T> cl, String... name1) throws Exception {
String name = "";
T t = null;
if (name1 != null && name1.length > 0)
name = name1[0];
else {
name = cl.getSimpleName();
name = name.substring(0, 1).toLowerCase().concat(name.substring(1));
}
t = (T) ctx.getBean(name);
return t;
}
/**
* 用来进行Controller的测试,执行request对象的action 示例如下: 继承该类后,可以使用以下代码进行action的测试
* request.setRequestURI("/order/add"); request.addParameter("id", "1002");
* request.addParameter("date", "2010-12-30"); request.setMethod("POST");
* final ModelAndView mav = this.excuteAction(request, response);//
* 执行URI对应的action Assert.assertEquals("order/add", mav.getViewName());
* String msg=(String)request.getAttribute("msg");
*
* @param request
* @param reponse
* @return
* @throws Exception
*/
protected ModelAndView excuteAction(HttpServletRequest request,
HttpServletResponse response) throws Exception {
HandlerExecutionChain chain = handlerMapping.getHandler(request);
final ModelAndView model = handlerAdapter.handle(request, response,
chain.getHandler());
return model;
}
}
测试controller类
/**
*
*/
package test;
import org.junit.Before;
import org.junit.Test;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
import com.gangyi.crm.controller.SpringMVCtest;
/**
* @author yangkun
*
*/
public class ControllerTest extends BaseTest<SpringMVCtest> {
public MockHttpServletRequest request;
public MockHttpServletResponse response;
@Before
public void setUp() throws Exception{
super.setUp();
request=new MockHttpServletRequest();
response=new MockHttpServletResponse();
}
@Test
public void testTest(){
request.setRequestURI("/springMVCtest.do");
request.addParameter("method", "regist");
request.setMethod("POST");
try {
this.excuteAction(request, response);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
点击》run as或debug as》juint测试
补充说明:
需要测试dao层时,若是dao层包nullpointException,有可能是你的数据库连接datasource使用代理或是其他,则需要重新在spring的配置文件配置bean id=datasource,
- 大小: 690.8 KB
分享到:
相关推荐
Spring MVC 是一个强大的Java web开发框架,用于构建可维护、可扩展的...总之,通过正确使用JUnit、Mockito、Spring Test以及MockMVC,我们可以编写出全面、有效的Spring MVC单元测试,确保代码质量并降低潜在的bug。
JUnit可以通过模拟HTTP请求和预期的响应来实现对Controller的单元测试。例如,我们可以创建一个MockMVC对象来模拟请求,并使用andExpect方法检查响应状态码、模型属性和视图名称。 其次,业务层是应用的核心,包含...
综上所述,"单元测试案例junit +spring mvc +springboot"涉及的是使用JUnit进行单元测试,结合Spring MVC和Spring Boot的特点,对服务端代码进行详尽的验证,确保代码的稳定性和可靠性。通过合理的测试策略和工具,...
本教程将详细讲解如何搭建一个Spring MVC项目,并实现Junit单元测试,确保代码的质量。 首先,我们需要了解Spring MVC的基本构成。Spring MVC的核心组件包括DispatcherServlet、Controller、ViewResolver、...
在本篇文章中,我们将探讨如何利用Spring的MOVE(Model-View-Controller)架构以及JUnit库来执行单元测试。首先,我们需要理解Spring的MOVE架构: 1. **Model**:这是应用的核心业务逻辑部分,它处理数据和业务规则...
十三、如何给Spring3 MVC中的Action做JUnit单元测试:说明了如何对Spring MVC中的控制器进行单元测试,包括配置测试环境和编写测试代码。 十四、Spring MVC转发与重定向:详细讲解了在Spring MVC中如何使用转发和...
非注解测试在Spring MVC中是指不依赖于Java注解如`@Test`,`@Controller`等进行的测试,而是通过XML配置文件来定义组件和它们之间的关系。这种方式虽然比注解方式繁琐,但有助于理解Spring MVC的工作原理。 首先,...
10. **单元测试和集成测试**:学习如何使用JUnit和Mockito等工具对Controller和Service层进行单元测试,以及使用Spring Test对整个应用进行集成测试。 通过这个简单的例子,初学者可以全面地了解Spring MVC的工作...
在Spring Boot中,单元测试是确保代码质量和可维护性的重要组成部分。通过单元测试,开发者能够独立验证代码的各个部分,确保它们按照预期工作,并在修改代码后快速发现潜在问题。Spring Boot为此提供了一系列便利...
7. **测试**:`test`目录可能包含了项目的单元测试和集成测试,确保各个组件的正确性。例如,可以使用JUnit测试用户服务类的注册和登录功能。 8. **IDE相关文件**:`.classpath`、`.mymetadata`、`.project`、`....
5. **src/test**: 测试代码目录,使用JUnit进行单元测试或集成测试。 项目结构遵循Maven的标准目录约定,使得代码组织清晰,易于维护。开发者可以在此基础上添加业务逻辑,扩展功能,或者结合其他Spring模块创建更...
9. **测试**:为了保证代码质量,项目可能包含单元测试和集成测试,使用JUnit、Mockito等工具对用户模块的功能进行验证。 通过这个“spring mvc demo加用户模块的”项目,开发者可以学习如何组织Spring MVC的项目...
- 单元测试:使用JUnit和Mockito测试Controller、Service和DAO层的功能。 总之,《Spring MVC与MYBatis企业应用实战》将引导读者深入理解这两种技术的结合,提供实际项目中的解决方案,帮助开发者在企业级应用开发...
7. 测试:通过单元测试和集成测试确保功能的正确性。可以使用 MockMVC 进行 Spring MVC 的模拟测试,对于 Mybatis,可以通过 JUnit 和 Mockito 测试数据库操作。 通过这种整合,开发者可以在 Spring MVC 的控制层...
10. **测试**:Spring提供了JUnit支持,可以方便地对Service和Controller进行单元测试,确保代码质量。 以上就是Spring与Spring MVC整合配置的一些基础知识,实际应用中还需要考虑安全性、性能优化等因素。通过不断...
13. **测试Spring MVC应用**:理解如何编写JUnit测试用例,使用MockMVC模拟HTTP请求,以及进行集成测试。 14. **Spring Security**:如果书中涉及,会讲解如何集成Spring Security进行身份验证和授权,保护应用程序...
#### 十三、JUnit 单元测试 Spring MVC 控制器 为了确保控制器的正确性,可以编写 JUnit 测试用例来进行单元测试。通常会使用 Spring Test 模块提供的 `MockMvc` 类来模拟 HTTP 请求,并验证控制器的行为。 #### ...
7. **单元测试和集成测试**:查看项目中的测试类,学习如何使用JUnit和Mockito进行测试。 通过深入研究这个Spring MVC demo,你将能掌握基本的Spring MVC工作流程,为后续更复杂的Web应用开发打下坚实基础。记得...