文档章节

spring集成测试

润柒的博客
 润柒的博客
发布于 2017/08/31 10:33
字数 609
阅读 1
收藏 0
点赞 0
评论 0

基于spring框架测试目标

  • 使用单元测试或集成测试,需做到不依赖于应用服务器或其他的发布环境
  • Spring IoC容器上下文的正确装配
  • 集成测试的事务管理
  • Spring上下文缓存

spring测试注解

Spring框架提供了许多的Spring特定注释,结合TestContext框架来实现单元测试和集成测试.

@ContextConfiguration

ContextConfiguration是一个类级别的注解,用来如何为集成测试来加载和配置应用程序上下文ApplicationContext。具体地说,ContextConfiguration声明了用于加载上下文的应用程序上下文资源路径和注解类。

//单个文件
@ContextConfiguration(locations="../applicationContext.xml")
public class FrontSvTests extends BaseSARTest {
    //TODO
}

//多个文件
@ContextConfiguration(locations={"../applicationContext.xml","../root.spring.xml"})
public class FrontSvTests extends BaseSARTest {
    //TODO
}

//声明为ContextLoader策略
@ContextConfiguration(loader=XxxContextLoader.class)
public class FrontSvTests extends BaseSARTest {
    //TODO XxxContextLoader为自定义ContextLoader  implements ContextLoader
    
}

@TestExecutionListeners

TestExecutionListeners定义了一个类级别的元数据,用于配置需要用TestContextManager进行注册的TestExecutionListener实现。通常,@TestExecutionListeners与@ContextConfiguration一起使用。

@ContextConfiguration
@TestExecutionListeners({CustomTestExecutionListener.class, AnotherTestExecutionListener.class})
public class CustomTestExecutionListenerTests {
	// class body...
}

Spring TestContext 测试框架体系结构

TestContext 测试框架的核心由 org.springframework.test.context 包中三个类组成,分别是 TestContext 和 TestContextManager 类以及 TestExecutionListener 接口 TestContext

  • TestContext:它封装了运行测试用例的上下文
  • TestContextManager:它是进入 Spring TestContext 框架的程序主入口,它管理着一个 TestContext 实例,并在适合的执行点上向所有注册在 TestContextManager 中的 TestExecutionListener 监听器发布事件:比如测试用例实例的准备,测试方法执行前后方法的调用等
  • TestExecutionListener:该接口负责响应 TestContextManager 发布的事件

Spring 提供了几个 TestExecutionListener 接口实现类:

从TestContextManager中定义了默认的Listener

public class TestContextManager {
private static final String[] DEFAULT_TEST_EXECUTION_LISTENER_CLASS_NAMES = { "org.springframework.test.context.web.ServletTestExecutionListener", "org.springframework.test.context.support.DependencyInjectionTestExecutionListener", "org.springframework.test.context.support.DirtiesContextTestExecutionListener", "org.springframework.test.context.transaction.TransactionalTestExecutionListener" };
}
  • DependencyInjectionTestExecutionListener:该监听器提供了自动注入的功能,它负责解析测试用例中 @Autowried 注解并完成自动注入
  • DirtiesContextTestExecutionListener:一般情况下测试方法并不会对 Spring 容器上下文造成破坏(改变 Bean 的配置信息等),如果某个测试方法确实会破坏 Spring 容器上下文,你可以显式地为该测试方法添加 @DirtiesContext 注解,以便 Spring TestContext 在测试该方法后刷新 Spring 容器的上下文,而 DirtiesContextTestExecutionListener 监听器的工作就是解析 @DirtiesContext 注解
  • TransactionalTestExecutionListener:它负责解析 @Transaction、@NotTransactional 以及 @Rollback 等事务注解的注解

© 著作权归作者所有

共有 人打赏支持
润柒的博客
粉丝 0
博文 41
码字总数 20953
作品 0
深圳
程序员
sping3+hibernate4框架模板

本框架以商品购物平台项目为例,用到spring3mvc和hibernate4,主要搭建步骤如下: 1、spring3MVC模板 2、集成hiebernate4模板 3、Spring集成测试模板 包含的技术: spring框架; springMVC技术...

java-苦苦甜甜
2012/10/19
0
0
mybatis入门教程(八)------mybatis与spring集成

Mybatis与Spring集成开发 前期准备 mybatis与Spring集成,那么就需要spring对应的jar包 <dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><vers......

残风vs逝梦
2014/06/10
0
1
struts+spring+hibernate 整合spring security 2.X

好吧!在这个夜深人静的时候,既然没有睡意,那就刚好整理一个我的博文,osc挺好的,以后技术博文就在这里整理了!前几天因为项目需求spring security 机制,所以就自己研究了一下,到官方下...

Beyond-Bit
2012/07/01
0
4
Spring集成Redis方案(spring-data-redis)(基于Jedis的单机模式)(待实践)

说明:请注意Spring Data Redis的版本以及Spring的版本!最新版本的Spring Data Redis已经去除Jedis的依赖包,需要自行引入,这个是个坑点。并且会与一些低版本的Spring有冲突,要看官方文档...

easonjim
2017/10/05
0
0
Spring生态系统(Spring可能大家都在用,很少去关注整体架构)

Spring的整体架构 1、Spring框架至今已集成了20多个模块。这些模块主要被分如下图所示的核心容器、数据访问/集成,、Web、AOP(面向切面编程)、工具、消息和测试模块[5]: 2、Core Container ...

王木东
03/22
0
0
spring 集成 junit

spring 集成 junit,方便测试,特别是使用TDD方法开发。 1、spring是纯java方式配置,集成junit如下: import org.junit.Test;import org.junit.runner.RunWith;import org.springframework...

隆回水哥
2015/03/27
0
0
Spring Framework体系结构简介

说明:以下转自Spring官方文档,用的版本为4.3.11版本。 一、引用官方文档 所述核心容器由以下部分组成, ,,,和(弹簧表达式语言)模块。 的和模块提供框架的基本零件,包括IOC和依赖注入...

easonjim
2017/09/16
0
0
实践Jenkins集成Cobertura自动化构建SpringBoot工程

热文推荐: 你的微服务敢独立交付么? 理解JWT的使用场景和优劣 从Spring-Session源码看Session机制的实现细节 理解使用 JWT 设计的单点登录系统 JDK 1.5 - 1.8 各版本的新特性总结 Spring B...

程序猿DD
04/28
0
0
【死磕Sharding-jdbc】—–基于ssm

原文作者:阿飞Javaer 原文链接:https://www.jianshu.com/p/602e24845ed3 本篇文章讲解如何在ssm(spring、springmvc、mybatis)结构的程序上集成sharding-jdbc(版本为1.5.4.1)进行分库分...

飞哥-Javaer
05/05
0
0
使用Spring的测试机制进行集成测试

Spring3.0已经在2009年12月中旬正式发布,但是目前的各种应用系统仍然基于2.5甚至更早的版本构建而来,并且从Sprin3.0的新特性(核心API迁移至java1.5及使用范型、Spring Expression Languag...

晨曦之光
2012/03/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Mybaties入门介绍

Mybaties和Hibernate是我们在Java开发中应用的比较多的两个ORM框架。当然,目前Mybaties正在慢慢取代Hibernate,这是因为相比较Hibernate而言Mybaties性能更好,响应更快,更加灵活。我们在开...

王子城
昨天
0
0
编程学习笔记之python深入之装饰器案例及说明文档[图]

编程学习笔记之python深入之装饰器案例及说明文档[图] 装饰器即在不对一个函数体进行任何修改,以及不改变整体的原本意思的情况下,增加函数功能的新函数,因为这个新函数对旧函数进行了装饰...

原创小博客
昨天
0
0
流利阅读笔记33-20180722待学习

黑暗中的生物:利用奇技淫巧快活生存 Daniel 2018-07-22 1.今日导读 如果让你在伸手不见五指的黑暗当中生存,你能熬过几天呢?而大千世界,无奇不有。在很多你不知道的角落,有些生物在完全黑...

aibinxiao
昨天
2
0
Hystrix降级逻辑中如何获取触发的异常

通过之前Spring Cloud系列教程中的《Spring Cloud构建微服务架构:服务容错保护(Hystrix服务降级)》一文,我们已经知道如何通过Hystrix来保护自己的服务不被外部依赖方拖垮的情况。但是实际...

程序猿DD
昨天
0
0
gin endless 热重启

r := gin.New()r.GET("/", func(c *gin.Context) {c.String(200, config.Config.Server.AppId)})s := endless.NewServer(":8080", r)s.BeforeBegin = func(add string) ......

李琼涛
昨天
0
0
JAVA模式之代理模式

平时一直在用spring,spring中最大的特效IOC和AOP,其中AOP使用的就是代理模式.闲着无聊,随手写了一个代理模式,也记录下代理模式的实现Demo. 比如现在有一个场景是:客户想要增加一个新的功能,...

勤奋的蚂蚁
昨天
0
0
ES15-JAVA API 索引管理

1.创建连接 创建连接demo package com.sean.esapi.client;import java.net.InetSocketAddress;import org.elasticsearch.action.get.GetResponse;import org.elasticsearch.clien......

贾峰uk
昨天
0
0
单点登录的设计,从单域名到多域名(经验分享)

个人实践总结,最初的的需求,多个产品线都在同一个根域名下面。 独立的用户中心分离,单独负责用户登录和用户信息获取、变更等处理逻辑。 第一步,用户登录成功,分配给用户一个memToken(令...

小海bug
昨天
0
0
合格前端第十二弹-TypeScript + 大型项目实战

写在前面 TypeScript 已经出来很久了,很多大公司很多大项目也都在使用它进行开发。上个月,我这边也正式跟进一个对集团的大型运维类项目。 项目要做的事情大致分为以下几个大模块 一站式管理...

qiangdada
昨天
3
0
gradle学习笔记

相关文档 适合新手的 gradle 自学教程合集 Gradle教程

OSC_fly
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部