如何实现对Struts+Spring+Hibernate的SSH项目应用Mock方法实施单元测试的实例(第5部分)
- 格式:pdf
- 大小:458.05 KB
- 文档页数:19
1.1如何实现对Struts+Spring+Hibernate的SSH项目应用Mock方法实施单元测试的实例(第5部分)1.1.1体验TDD分层开发过程-----重构业务层为基于Spring框架实现1、添加与Spring相关的内容(1)主要涉及spring.jar和log4j-1.2.9.jar、commons-logging.jar---(观察一下,如果它们两个已经在前面加入了,可以不用再加入)放入本项目中。
最和为下面的状态(2)添加log4j的属性配置文件log4j.properties可以将Spring 系统包中的samples/petclinic/war/WEB-INF/log4j.properties文件引入到本项目中的WEB-INF目录中。
或者,自己新建。
修改其所产生的log文件的名称# For JBoss: Avoid to setup Log4J outside $JBOSS_HOME/server/default/deploy/log4j.xml!# For all other servers: Comment out the Log4J listener in web.xml to activate Log4J.log4j.rootLogger=INFO, stdout, logfilelog4j.appender.stdout=org.apache.log4j.ConsoleAppenderyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%d %p [%c] - <%m>%nlog4j.appender.logfile=org.apache.log4j.RollingFileAppenderlog4j.appender.logfile.File=mylog.loglog4j.appender.logfile.MaxFileSize=512KB# Keep three backup files.log4j.appender.logfile.MaxBackupIndex=3# Pattern to output: date priority [category] - messageyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%d %p [%c] - %m%n(3)在web.xml 文件中添加<context-param>标签以定位log4j.properties文件由于在本例中采用对log4j.properties文件进行用户化的定制,因此需要在web.xml 文件中添加如下的标签。
<context-param><param-name>log4jConfigLocation</param-name><param-value>/WEB-INF/log4j.properties</param-value></context-param><listener><listener-class>org.springframework.web.util.Log4jConfigListener</listener-class></listener>2、新建Spring IoC的XML配置文件(1)在src的目录下新建SpringIoCBean.XML配置文件(2)在该文件中定义出我们的各个Bean对象对于Spring 1.2版为下面的状态<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "/dtd/spring-beans.dtd"><beans><bean name="userManageImpleBean" class="erManageImple"><property name="userManageDAOJDBCImple"><ref bean="userManageDAOJDBCImpleBean" /></property></bean><bean name="userManageDAOJDBCImpleBean" class="erManageDAOJDBCImple"></bean></beans>对于Spring 2.0版为下面的状态<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "/dtd/spring-beans-2.0.dtd"><beans><bean name="userManageImpleBean" class="erManageImple"><property name="userManageDAOJDBCImple"><ref bean="userManageDAOJDBCImpleBean" /></property></bean><bean name="userManageDAOJDBCImpleBean" class="erManageDAOJDBCImple"></bean></beans>3、修改业务层组件UserManageImple的代码(1)添加成员属性,并提供set方法UserManageDAOInterface userManageDAOJDBCImple=null;(2)最后的代码为下面的状态package com.px1987.stcexample.model;import erInfoPO;import erManageDAOInterface;import erManageDAOJDBCImple;public class UserManageImple implements UserManageInterface{ UserManageDAOInterface userManageDAOJDBCImple=null;public void setUserManageDAOJDBCImple( U serManageDAOInterface userManageDAOJDBCImple){ //本方法为后面的Spring做准备erManageDAOJDBCImple = userManageDAOJDBCImple;}public UserManageImple() {}public boolean doUpdateUserInfo(UserInfoEntityBean newUserInfo){ return false;}public boolean doUserLogin(UserInfoEntityBean loginUserInfo){ boolean okOrNot=false;String userName=loginUserInfo.getUserName();String userPassWord=loginUserInfo.getUserPassWord();// userManageDAOJDBCImple=new UserManageDAOJDBCImple();UserInfoPOreturnOneUserInfo=userManageDAOJDBCImple.SelectOneUserInfoData(userName,userPassWord);if(returnOneUserInfo!=null){okOrNot=true;}else{okOrNot=false;}return okOrNot;}public boolean doUserRegister(UserInfoEntityBean registerUserInfo) { return false;}}1.1.2体验TDD分层开发过程-----对前面的重构实现进行测试1、在测试项目中引入与Spring相关的*.jar包文件2、添加log4j的属性配置文件(1)新建log4j.properties文件(2)内容如下# For JBoss: Avoid to setup Log4J outside $JBOSS_HOME/server/default/deploy/log4j.xml! # For all other servers: Comment out the Log4J listener in web.xml to activate Log4J.log4j.rootLogger=INFO, stdout, logfilelog4j.appender.stdout=org.apache.log4j.ConsoleAppenderyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%d %p [%c] - <%m>%nlog4j.appender.logfile=org.apache.log4j.RollingFileAppenderlog4j.appender.logfile.File=mylog.loglog4j.appender.logfile.MaxFileSize=512KB# Keep three backup files.log4j.appender.logfile.MaxBackupIndex=3# Pattern to output: date priority [category] - messageyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%d %p [%c] - %m%n3、修改TestUserLoginImple测试用例类(1)TestUserLoginImple测试用例类为下面的状态package com.px1987.stcexample.test;import junit.framework.TestCase;import com.px1987.stcexample.model.*;import org.springframework.context.ApplicationContext;import org.springframework.context.support.FileSystemXmlApplicationContext;public class TestUserManageImple extends TestCase{UserManageInterface oneUserManageBean=null;protected void setUp() throws Exception{super.setUp();// oneUserManageBean=new UserManageImple();StringspringXMLPath="D:/BBSSystem/MockStrutsTest/WebRoot/WEB-INF/classes/SpringIoCBean.X ML";ApplicationContext applicationContext = new FileSystemXmlApplicationContext(springXMLPath);oneUserManageBean = (UserManageInterface) applicationContext.getBean("userManageImpleBean"); }protected void tearDown() throws Exception{super.tearDown();oneUserManageBean=null;}public void testDoUpdateUserInfo(){}public void testDoUserLogin() //该方法测试正确的状态{UserInfoEntityBean oneUserInfo=new UserInfoEntityBean();oneUserInfo.setUserName("yang");oneUserInfo.setUserPassWord("1234");boolean actualReturn=oneUserManageBean.doUserLogin(oneUserInfo);this.assertTrue(actualReturn);}public void testDoUserLoginFail() //该方法测试不正确的状态{UserInfoEntityBean oneUserInfo=new UserInfoEntityBean();oneUserInfo.setUserName("yang");oneUserInfo.setUserPassWord("12345678");boolean actualReturn=oneUserManageBean.doUserLogin(oneUserInfo);this.assertFalse(actualReturn);}public void testDoUserRegister(){}}(2)再执行TestUserManageImple用例类将出现下面的结果4、修改TestUserManageDAOJDBCImple测试用例类由于我们现在也已经将DAOOperatorDBBean组件类在Spring的IoC的容器中进行定义,则对它的测试也应该基于Spring的IoC容器的环境----从ApplicationContext中获得我们所需要的被测试的DAOOperatorDBBean组件类对象。