文档章节

spring集成测试

润柒的博客
 润柒的博客
发布于 2017/08/31 10:33
字数 609
阅读 1
收藏 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
博文 44
码字总数 25132
作品 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
新书上架:《Spring Boot 开发实战》(基于 Kotlin + Gradle + Spring Boot 2.0 的企业级服务端开发实战)

新书上架:《Spring Boot 开发实战》 — 基于 Kotlin + Gradle + Spring Boot 2.0 的企业级服务端开发实战 京东下单链接 https://item.jd.com/31178320122.html 天猫下单链接 https://detail...

程序员诗人
2018/08/05
0
0
Spring集成Redis方案(spring-data-redis)(基于Jedis的单机模式)(待实践)

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

easonjim
2017/10/05
0
0
集成测试——Spring TestContext框架支持详细解说

概述 集成测试是在单元测试之上,通常是将一个或多个已进行过单元测试的组件组合起来完成的,即集成测试中一般不会出现Mock对象,都是实实在在的真实实现。 对于单元测试,如前边在进行数据访...

呐呐丶嘿
2018/11/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

听说拼多多因漏洞被薅了200亿?- 谈谈软件测试

昨天看到一个大新闻:拼多多在20日凌晨出现漏洞,用户可以领100元无门槛优惠券。一夜之间,被黑产、羊毛党和闻讯而来的吃瓜群众薅了个底朝天,直到第二天上午9点才将优惠券下架。网上传言这一...

crossin
24分钟前
2
0
微服务架构有毒,何时不使用微服务?

在过去的四年中,使用微服务来构建应用程序似乎成了一种标准。大多数我所合作过的团队也对此表现出了不同程度的兴趣。 微服务所承诺的弹性、高可用、低耦合、敏捷,以及能够解决单体架构带来...

架构师springboot
30分钟前
2
0
日志服务Python消费组实战(三):实时跨域监测多日志库数据

摘要: 本文主要介绍如何使用消费组实时监控多个域中的多个日志库中的异常数据,并进行下一步告警动作。具备配置简单、逻辑灵活、支持跨域多Region、实时监测,无需配置索引等特点,并且性能...

阿里云云栖社区
30分钟前
2
0
常用css动效

1.列表浮层变化动效 demo地址 下载地址 2.js动画库 github地址 3.滚动加载 Scrollreveal 4.其他动效 tobiasahlin

chinahufei
31分钟前
2
0
Coding and Paper Letter(四十六)

资源整理。 1 Coding: 1.卫星影像深度学习资源。 satellite image deep learning 2.runoff tools为MOM生成径流文件的一些工具变得轻而易举。 runoff tools 3.NOAA-GFDL海冰模拟器V2.0。 SIS2...

胖胖雕
33分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部