文档章节

springMVC中使用Junit

有理想的鸭子
 有理想的鸭子
发布于 2015/07/31 17:53
字数 249
阅读 34
收藏 1

     在进行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();
        }


			
}

 

© 著作权归作者所有

有理想的鸭子
粉丝 3
博文 49
码字总数 20560
作品 0
武汉
高级程序员
私信 提问
Java Web(5) Spring 下使用Junit4 单元测试

如何在不启动Tomcat服务器的情况下对,Dao这些不依赖使用Servlet API的类来进行单元测试呢? 其实在Spring框架体系中,已经有一套自己的测试代码,其中就是依赖使用Junit来进行测试 ,不需要...

Jagery
2015/11/15
2.1K
0
在使用spring和junit是遇到的java.lang.noSuchMethodError异常

今天在使用使用spring框架时,用junit进行单元测试是遇到了如下异常,后来上网查阅了一番之后说是spring和junit有着版本兼容的问题,我使用的spring是4.24版本,junit使用的是4.11版本,jun...

ljm12345
2018/03/24
1K
3
swagger与spring junit冲突

我的项目环境是spring3.2+hibernate4,最近项目中要使用swagger,于是把swagger集成到项目中。swagger倒是可以使用了,但是我的junit却不能使用了。当我运行junit测试的时候,就直接报错。错...

刘睿智
2016/07/06
1K
2
解决org/junit/Assume$AssumptionViolatedException异常

Spring版本2.5.5,JUnit 版本 4.8.1,使用了 Spring TestContext 的 SpringJUnit4ClassRunner。一直使用这个版本的JUnit,在写简单的测试时不会抛错,直到今天开始尝试写规范的JUnit测试代 ...

吕兵阳
2014/04/15
3.3K
0
Spring Boot(十二)单元测试JUnit

一、介绍 JUnit是一款优秀的开源Java单元测试框架,也是目前使用率最高最流行的测试框架,开发工具Eclipse和IDEA对JUnit都有很好的支持,JUnit主要用于白盒测试和回归测试。 白盒测试:把测试...

王磊的博客
2018/11/05
263
0

没有更多内容

加载失败,请刷新页面

加载更多

golang-字符串-地址分析

demo package mainimport "fmt"func main() {str := "map.baidu.com"fmt.Println(&str, str)str = str[0:5]fmt.Println(&str, str)str = "abc"fmt.Println(&s......

李琼涛
40分钟前
3
0
Spring Boot WebFlux 增删改查完整实战 demo

03:WebFlux Web CRUD 实践 前言 上一篇基于功能性端点去创建一个简单服务,实现了 Hello 。这一篇用 Spring Boot WebFlux 的注解控制层技术创建一个 CRUD WebFlux 应用,让开发更方便。这里...

泥瓦匠BYSocket
今天
6
0
从0开始学FreeRTOS-(列表与列表项)-3

FreeRTOS列表&列表项的源码解读 第一次看列表与列表项的时候,感觉很像是链表,虽然我自己的链表也不太会,但是就是感觉很像。 在FreeRTOS中,列表与列表项使用得非常多,是FreeRTOS的一个数...

杰杰1号
今天
4
0
Java反射

Java 反射 反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的 Class,Class 类 用于表示.class 文件(字节码)) 一、反射的概述 定义:JAVA 反射机制是在运行状态中,对于任...

zzz1122334
今天
4
0
聊聊nacos的LocalConfigInfoProcessor

序 本文主要研究一下nacos的LocalConfigInfoProcessor LocalConfigInfoProcessor nacos-1.1.3/client/src/main/java/com/alibaba/nacos/client/config/impl/LocalConfigInfoProcessor.java p......

go4it
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部