spring集成测试
spring集成测试
润柒的博客 发表于3个月前
spring集成测试
  • 发表于 3个月前
  • 阅读 0
  • 收藏 0
  • 点赞 0
  • 评论 0
摘要: spring测试

基于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 等事务注解的注解
标签: Spring Test DBUnit
共有 人打赏支持
粉丝 0
博文 14
码字总数 17731
×
润柒的博客
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: