在junit测试框架里我们已经有了几个常见的注解来定义test case执行前后的回调行为。
注释 |
说明 |
@Before |
初始化方法 |
@After |
释放资源 |
@Test |
测试方法 |
@Ignore |
忽略的测试方法 |
@BeforeClass |
针对所有测试,只执行一次,且必须为static void |
@AfterClass |
针对所有测试,只执行一次,且必须为static void |
这些方法可以满足大多数应用的需求。但是Spring中也集成了Unit测试的功能,并且同样定义了一些回调函数可以切入。
下面记录下项目中的一个应用实例。
Dao的测试里需要在每个测试方法之前都对相应的数据库数据进行初始化。因为测试数据不是通过数据标示来区分不同case的。所以每次case测试前只要将本case的数据初始化。这样一来在测试方法开始之前,必须得到这个要测试的方法名。Junit的注解中@Before是在每个方法开始之前运行的,但是在里面无法得到即将要测试的方法名。Junit没有提供相应的机制给出测试中的流程数据。
这时我们就可以借助Spring提供的@TestExecutionListeners来插入这种回调。
class BeforeMethod implements TestExecutionListener {
public static final Logger logger = Logger.getLogger(BeforeMethod.class);
@Override
public void afterTestClass(TestContext arg0) throws Exception {
}
@Override
public void afterTestMethod(TestContext arg0) throws Exception {
}
@Override
public void beforeTestClass(TestContext arg0) throws Exception {
}
@Override
public void beforeTestMethod(TestContext con) throws Exception {
String testClass = con.getTestClass().getSimpleName();
logger.debug("database initialization class name: " + testClass);
String testMethod = con.getTestMethod().getName();
logger.debug("database initialization method name: " + testMethod);
DBInitializer.doInit(testClass, testMethod);
}
@Override
public void prepareTestInstance(TestContext arg0) throws Exception {
}
}
TestContext 核心类、支持类以及注解类
TestContext 测试框架的核心由 org.springframework.test.context 包中三个类组成,分别是 TestContext 和 TestContextManager 类以及 TestExecutionListener 接口。
1.TestContext:它封装了运行测试用例的上下文;
2.TestContextManager:它是进入 Spring TestContext 框架的程序主入口,它管理着一个 TestContext 实例,并在适合的执行点上向所有注册在 TestContextManager 中的 TestExecutionListener 监听器发布事件:比如测试用例实例的准备,测试方法执行前后方法的调用等。
3.TestExecutionListener:该接口负责响应 TestContextManager 发布的事件。
Spring TestContext 允许在测试用例类中通过 @TestExecutionListeners 注解向 TestContextManager 注册多个监听器,如下所示:
@TestExecutionListeners( {
DependencyInjectionTestExecutionListener.class,
DirtiesContextTestExecutionListener.class })
public class TestXxxService{
…
}
|
DependencyInjectionTestExecutionListener:该监听器提供了自动注入的功能,它负责解析测试用例中 @Autowried 注解并完成自动注入。
在 JUnit中可以通过 @RunWith 注解指定测试用例的运行器,Spring TestContext 框架提供了SpringJUnit4ClassRunner 运行器,它负责总装 Spring TestContext 测试框架并将其统一到 JUnit框架中。
最终监听器类和TestContext的使用通过在Test类上的注解来定义
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
@TestExecutionListeners({ BeforeMethod.class, DependencyInjectionTestExecutionListener.class })
public class DaoTestBase {
}
分享到:
相关推荐
首先,Spring TestContext框架的核心是`@ContextConfiguration`注解,它用于指定测试类中应用上下文的配置。你可以通过此注解提供XML配置文件的位置,或者使用Java配置类。例如: ```java import org.spring...
7. **SpringJUnit4ClassRunner**:实现了JUnit的Runner接口,提供Spring TestContext框架的功能。 8. **ContextCache**:缓存ApplicationContext,避免重复加载,提高测试性能。 9. **ContextLoader**:负责加载...
在Spring MVC中,我们可以利用Spring的TestContext框架和MockMVC库来模拟HTTP请求,对Controller进行隔离测试。 进行Spring MVC Controller的单元测试,我们需要以下步骤: 1. **配置测试环境**:引入Spring Test...
此外,Spring的TestContext框架可以进一步简化测试环境的配置,自动加载测试所需的ApplicationContext。 总之,Spring+JUnit4+Ant的组合为Java开发提供了强大的单元测试能力。通过合理配置和使用这些工具,开发者...
TestContext框架是Spring测试支持的一部分,它提供了一个统一的测试上下文,可以加载Spring配置,并为测试注入依赖。以下是对Spring测试框架及其核心组件的详细说明: 1. **测试注解**:Spring测试框架利用注解简化...
- **@RunWith(SpringJUnit4ClassRunner.class)**:这个注解将JUnit测试类与Spring TestContext框架关联起来,使Spring能够管理测试环境。 - **@ContextConfiguration**:此注解用于指定测试所需的配置文件,Spring...
2. **Spring TestContext框架**:这是Spring Test的核心,它管理测试上下文,包括bean定义、配置和初始化。通过`@ContextConfiguration`注解,我们可以指定测试所需的配置文件或者使用类路径扫描来加载Spring应用上...
2. **定义测试类**:测试类通常需要继承自 `AbstractTransactionalJUnit4SpringContextTests` 或使用 `@RunWith(SpringRunner.class)` 来集成 Spring 测试框架。 3. **配置 TestExecutionListeners**:可以通过 `@...
二、Spring Test和@TestContext框架 Spring Test是Spring框架的一部分,提供了在Spring环境中运行测试的能力。它包含了`@SpringBootTest`注解,用于启动一个完整的Spring Boot应用上下文,这样我们就可以在测试中...
Spring 2.5 TestContext框架是Spring框架的一个重要组成部分,主要设计用于简化单元测试和集成测试的编写。这个框架提供了一种结构化的测试环境,它允许开发者在测试中利用Spring的依赖注入特性,以及对...
Spring TestContext框架提供了一个统一的入口点,允许我们在JUnit测试中加载Spring应用上下文。这可以通过继承`@RunWith(SpringRunner.class)`注解的测试类实现,或者使用`@SpringBootTest`注解直接启动应用上下文...
在Spring3中,我们可以使用JUnit作为基础测试框架,配合Spring的`@ContextConfiguration`注解加载应用上下文,`@Autowired`注解注入依赖,以及`@Test`注解定义测试方法。例如,我们可以创建一个测试类,通过`@...
2. `JUnit`:一个广泛使用的单元测试框架,Spring Test与JUnit深度集成,提供测试注解如`@Test`,`@Before`,`@After`等。 3. `MockitoJUnitRunner`或`SpringRunner`:这两个运行器分别来自Mockito和Spring,帮助...
在 Spring Boot 中,可以使用 JUnit 或 TestNG 等测试框架来进行单元测试。单元测试的目的是为了确保单个类或方法的正确性和可靠性。 Spring 测试 Spring 测试是指对基于 Spring 框架的应用程序的测试。Spring ...
你可以使用JUnit或TestNG作为基础测试框架,结合Spring TestContext Framework来创建和管理测试上下文,以便于隔离和测试单个组件或服务。 接下来,Struts测试主要关注基于Struts框架的应用程序。Struts是一个MVC...
3. **Mockito与Spring集成**:Spring测试模块可以与Mockito等模拟框架集成,方便进行行为驱动开发(BDD)和单元测试。 4. **SpringJUnit4ClassRunner**与**SpringRunner**:这些测试运行器使得JUnit测试类可以利用...
本笔记将深入探讨Spring框架中的测试支持,包括单元测试、集成测试以及Spring TestContext框架的使用。 首先,我们来看Spring的单元测试。Spring提供了`@RunWith(SpringRunner.class)`注解,它是JUnit的一个扩展,...
Spring通过其TestContext框架和JUnit的集成,提供了便捷的单元测试支持。在`spring junit测试.docx`中,你可以了解到如何利用`@RunWith(SpringRunner.class)`注解启动Spring测试环境,以及如何使用`@Autowired`注解...
Spring提供了丰富的测试框架,包括`@RunWith(SpringRunner.class)`注解,它允许我们使用Spring TestContext Framework来运行Junit测试。这样,我们可以利用Spring的依赖注入,在测试环境中模拟真实的应用上下文。 1...
在"test"目录下,通常会有JUnit测试类,这些测试类利用Spring的TestContext框架来初始化Spring上下文并自动配置Hibernate,然后执行针对业务逻辑的测试。测试可能涉及创建和加载测试数据到HSQLDB,执行业务操作,...