在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 {
}
分享到:
相关推荐
概述直接使用JUnit测试Spring程序存在的不足一个需要测试的Spring服务类编写UserService的测试用例准备测试数据并检测运行结果SpringTestContext测试框架体系结构小结参考资料Spring2.5TestContext测试框架用于...
通过Spring集成单元测试,以后测试service层内容时,就不用getBean()来获得Service层对象了
spring-test-junit5, JUnit ( a )的spring TestContext框架扩展( a ) spring 5测试支持这个项目作为 5的正式 Prototype,在 spring TestContext框架测试支持,并与 SPR-13575结合到 Spring Framework 。 因此,在...
NULL 博文链接:https://zkf60553.iteye.com/blog/1604723
基于Spring的JUnit4单元测试
基于Spring的JUnit4单元测试
JUnit是一个开放源代码的Java测试框架
Spring整合Junit框架进行单元测试Demo 详细参考: http://blog.csdn.net/stemq/article/details/53291919
JUnit是一种测试框架,能够帮助程序运行并查看相应的错误
软件测试报告Junit的单元测试,框架的使用情况,适合正在学习的同学!
软件测试JUnit测试框架的使用实验1报告
讲解了Junit框架在单元测试过程中的应用
Junit开源测试框架 -Junit -Jmock -selenium -Apache JMeter
多数Java的开发环境都已经集成了JUnit作为单元测试的工具。 [1] JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework)。Junit测试是程序员测试,即所谓白盒测试,因为...
使用spring 和junit的一个小案例,用来了解如何使用spring和junit4。入门级
Spring3+junit的单元测试的代码示例。
免费了,spring4+JUnit简单测试,注解组件扫描和xml显示组件扫描,我自己都忘了里面有什么了。
单元测试之道(Java):使用JUnit进行单元测试。单元测试是提高代码质量的有效手段,但大部分开发人员由于种种原因都不乐意进行单元测试。
ITEST是面向主要的service接口诸如:HTTP,SOAP,JSON-RPC的轻量级自动化测试框架。...3. 数据准备与清理:构造测试数据的sql,或者service接口底层主要使用的是HttpClient JUnit 标签:iTest