操纵Spring 2.5 TestContext测试框架[Java编程]
本文“操纵Spring 2.5 TestContext测试框架[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
概述
Spring 2.5 相比于 Spring 2.0 所新增的最重要的功效可以归结为以下 3 点:
基于注解的 IoC 功效;
基于注解驱动的 Spring MVC 功效;
基于注解的 TestContext 测试框架.
Spring 举荐开辟者利用新的基于注解的 TestContext 测试框架,本文我们将对此举行具体的报告.
低版本的 Spring 所供应的 Spring 测试框架构在 JUnit 3.8 底子上扩大而来,它供应了若干个测试基类.而 Spring 2.5 所新增的基于注解的 TestContext 测试框架和低版本的测试框架没有任何干系.它采取全新的注解技术可以让 POJO 成为 Spring 的测试用例,除了拥有旧测试框架全部功效外,TestContext 还增添了一些新的功效,TestContext 可以运行在 JUnit 3.8、JUnit 4.4、TestNG 等测试框架下.
直接利用 JUnit 测试 Spring 程序存在的不足
在拙作《精通 Spring 2.x — 企业利用开辟详解》一书中,笔者曾经指出假如直接利用 JUnit 测试基于 Spring 的程序,将存在以下 4 点明显的不足:
招致 Spring 容器多次初始化问题:按照 JUnit 测试用例的调用流程,每履行一个测试办法城市重新成立一个测试用例实例并调用其 setUp() 办法.由于在普通情形下,我们都在 setUp() 办法中初始化 Spring 容器,这意味着测试用例中有多少个测试办法,Spring 容器就会被反复初始化多少次.
需求利用硬编码方法手工获得 Bean:在测试用例中,我们需求通过 ApplicationContext.getBean() 的办法从 Spirng 容器中获得需求测试的目标 Bean,并且还要举行造型操作.
数据库现场简单蒙受破坏:测试办法大概会对数据库记录举行更改操作,破坏数据库现场.固然是针对开辟数据库举行测试工作的,但假如数据操作的影响是长期的,将会形成堆集效应并影响到测试用例的再次履行.举个例子,假定在某个测试办法中往数据库插入一条 ID 为 1 的 t_user 记录,第一次运行不会有问题,第二次运行时,就会因为主键冲突而招致测试用例履行失利.所以测试用例应当既可以完成测试固件业务功效精确性的查抄,又可以简单地在测试完成后恢复现场,做到踏雪无迹、雁过无痕.
不简单在同一事件下拜候数据库以查验业务操作的精确性:当测试固件操作数据库时,为了检测数据操作的精确性,需求通过一种便利途径在测试办法相同的事件环境下拜候数据库,以查抄测试固件数据操作的履行效果.假如直接利用 JUnit 举行测试,我们很难完成这项操作.
Spring 测试框架是专门为测试基于 Spring 框架利用程序而计划的,它可以让测试用例非常便利地和 Spring 框架结合起来,以上全部问题都将迎刃而解.
一个需求测试的 Spring 服务类
在具体利用 TextContext 测试框架之前,我们先来熟习一下需求测试的 UserService 服务类.UserService 服务类中拥有一个处理用户登录的服务办法,其代码以下所示:
清单1. UserService.java 需求测试的服务类
package com.baobaotao.service;
import com.baobaotao.domain.LoginLog;
import com.baobaotao.domain.User;
import com.baobaotao.dao.UserDao;
import com.baobaotao.dao.LoginLogDao;
public class UserService{
private UserDao userDao;
private LoginLogDao loginLogDao;
public void handleUserLogin(User user) {
user.setCredits( 5 + user.getCredits());
LoginLog loginLog = new LoginLog();
loginLog.setUserId(user.getUserId());
loginLog.setIp(user.getLastIp());
loginLog.setLoginTime(user.getLastVisit());
userDao.updateLoginInfo(user);
loginLogDao.insertLoginLog(loginLog);
}
//省略get/setter办法
}
以上是“操纵Spring 2.5 TestContext测试框架[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |