在进行springmvc的开发中有时候进行单元测试又不想去启动服务器,spring提供了AbstractContextLoader可以让我们手动的加载xxx-servlet.xml文件:
1.首先建立一个模仿类
import javax.servlet.ServletContext; import org.springframework.beans.factory.support.BeanDefinitionReader; import org.springframework.beans.factory.support.DefaultListableBeanFactory; import org.springframework.beans.factory.xml.XmlBeanDefinitionReader; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.AnnotationConfigUtils; import org.springframework.core.io.FileSystemResourceLoader; import org.springframework.mock.web.MockServletContext; import org.springframework.test.context.support.AbstractContextLoader; import org.springframework.web.context.support.StaticWebApplicationContext; public class MockServletContextWebContextLoader extends AbstractContextLoader { private static final String SERVLET_CONTEXT_WEB_ROOT = "/webapp"; @Override public final ConfigurableApplicationContext loadContext(String... locations) throws Exception { /* * Use a type which implements ConfigurableWebApplicationContext! */ StaticWebApplicationContext context = new StaticWebApplicationContext(); prepareContext(context); customizeBeanFactory(context.getDefaultListableBeanFactory()); createBeanDefinitionReader(context).loadBeanDefinitions(locations); AnnotationConfigUtils.registerAnnotationConfigProcessors(context); customizeContext(context); context.refresh(); context.registerShutdownHook(); return context; } protected void prepareContext(StaticWebApplicationContext context) { /* * Incorporate mock servlet context! */ ServletContext servletContext = new MockServletContext(SERVLET_CONTEXT_WEB_ROOT, new FileSystemResourceLoader()); servletContext.setAttribute(StaticWebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, context); context.setServletContext(servletContext); } protected void customizeBeanFactory(DefaultListableBeanFactory beanFactory) { } protected BeanDefinitionReader createBeanDefinitionReader(StaticWebApplicationContext context) { return new XmlBeanDefinitionReader(context); } protected void customizeContext(StaticWebApplicationContext context) { } @Override protected String getResourceSuffix() { return "-servlet.xml"; } }
2.编写测试类
import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; /** *把测试交给Spring框架自己来做,继承AbstractJUnit4SpringContextTests *并指定配置文件的路径 */ @ContextConfiguration(inheritLocations = true, loader = MockServletContextWebContextLoader.class,locations = { "file:src/main/webapp/WEB-INF/xxx-servlet.xml"}) @RunWith(SpringJUnit4ClassRunner.class) public class TestBase extends AbstractJUnit4SpringContextTests { // 依赖注入 public @Autowired XxxClass test; @Test public void test() { // TODO // test.xxx(); } }
相关推荐
SpringMvc单元测试Junit是Java开发中的重要实践,主要用于确保应用程序的特定部分,如控制器,服务或DAO,按预期工作。在这个Demo中,我们将深入探讨SpringMvc如何与JUnit结合进行有效的单元测试,以及如何利用这些...
这里我们关注的是基于Java技术栈的Web应用环境,具体包括Hibernate4、SpringMVC、JUnit4和log4j这四个核心组件。下面将详细介绍这些组件以及如何整合它们进行环境搭建。 **1. Hibernate4** Hibernate是一个开源的...
springMVC集成junit4需要的jar包 junit-4.10.jar和spring-test-4.2.0.RELEASE.jar
Spring MVC、MyBatis、Maven 和 JUnit 是四个在软件开发中广泛使用的开源框架和技术。它们在构建高效、可维护的Java应用中扮演着重要角色。以下是对这些技术的详细解释: **Spring MVC** Spring MVC是Spring框架的...
SpringMVC、Hibernate、JUnit 和 JSON 这四个技术在IT行业中是极其重要的组件,它们各自在不同的领域发挥着关键作用,而将它们整合在一起则能构建出强大的企业级Web应用程序。 SpringMVC 是Spring框架的一个模块,...
在IT行业中,SpringMVC、JUnit和MyBatis是三个非常重要的开源框架,它们分别用于构建Web应用程序、单元测试和数据库操作。这三个组件的整合能够为开发者提供一个高效且易于维护的开发环境。下面将详细讲解这三个框架...
SpringMVC、Hibernate和JUnit4是Java开发中的三大重要工具,它们分别在不同的层面上助力于应用程序的构建和测试。本压缩包提供了这三者组合的基本框架所需的Jar包,几乎无需额外配置,大大简化了开发过程。 首先,...
在本文中,我们将深入探讨如何整合`Maven`、`SpringMVC`、`MyBatis`和`Junit`来构建一个完整的Web应用程序。这个过程详细地描述了从创建Maven项目到最终实现集成的步骤。 首先,我们需要创建一个基于Maven的Web项目...
本教程将详细讲解如何使用四个关键的技术栈——Maven、SpringMVC、MyBatis和JUnit来搭建一个功能完善的示例项目,并包含了数据库操作和单元测试。下面,我们将深入探讨每个组件以及它们在项目中的作用。 首先,**...
标题中的"springmvc+maven+junit+jqueryUI"是一个典型的Web开发技术组合,涉及四个主要组件:Spring MVC、Maven、JUnit和jQuery UI。现在,让我们深入探讨这些技术及其在实际开发中的应用。 1. Spring MVC(Spring ...
【标题】"spring+springMVC+mybatis+maven+junit+mysql" 是一个常见的Java Web项目技术栈,它涵盖了从后端开发到数据库管理,再到自动化构建和测试的完整流程。下面将详细阐述这些技术及其在项目中的作用。 ...
在本文中,我们将深入探讨如何使用Spring MVC、MyBatis、Maven和JUnit这四大核心技术来构建一个功能完备的Web应用程序,实现数据的增、删、查、改(CRUD)操作。Spring MVC作为Spring框架的一部分,是用于构建Web...
在`test_junit`这个文件夹中,可能包含的是使用JUnit编写的测试类,针对Spring MVC的控制器、SSH框架中的业务逻辑和服务进行测试。 测试SSH项目时,通常会做以下几件事: 1. **配置测试环境**:设置Spring的...
在本项目中,我们主要探讨了如何利用NetBeans IDE、SpringMVC、Maven、MyBatis、JUnit和Log4j这些技术栈来构建一个完整的Java Web应用,以实现对MySQL数据库的CRUD(创建、读取、更新、删除)操作。下面将详细解析每...
然后,编写测试类,使用@RunWith注解指定SpringJUnit4ClassRunner运行器,@ContextConfiguration注解加载上下文配置,使用@WebAppConfiguration表明是Web应用测试。例如: ```java package ...
【标题】"spring+springmvc+mybatis+maven+junit整合"是一个常见的Java Web开发框架集成,这个项目旨在为初学者提供一个基础的、可运行的示例,以理解这些技术如何协同工作。 【Spring框架】是核心的依赖注入(DI)...
本项目框架“maven+springMVC+mybatis+velocity+mysql+junit”提供了一种高效、灵活且可维护的解决方案。以下将详细讲解这些组件及其作用。 1. Maven: Maven是一个项目管理工具,用于构建、依赖管理和项目信息...
在本整合实例中,我们将探讨如何将Spring MVC 5、Hibernate 5、JUnit 4 和 Log4j2 集成在一起,以构建一个高效、可测试和日志记录完善的Java Web应用程序。以下是对这些技术及其整合过程的详细说明: **Spring MVC ...
【标题】"eclipse_springmvc_maven_mybatis3_junit4" 提示我们这是一个基于Eclipse开发的项目,它整合了Spring MVC、Maven、MyBatis和JUnit4这四大核心组件,用于构建Web应用程序的示例。下面将详细阐述这些技术及其...
在使用注解的SpringMVC中,我们通常会使用@Controller、@RequestMapping等注解来标记控制器类和处理请求的方法。 1. **控制器(Controller)**:使用`@Controller`注解标记类,表明这个类是一个处理HTTP请求的控制...