1.1对基于Spring框架的J2SE Java应用程序组件进行单元测试的应用实例
1.1.1采用FileSystemXmlApplicationContext获得ApplicationContext
1、常规的JUnit中是直接创建被测试类的对象
2、如果被测试类的对象是由Spring 中IoC容器来创建
(1)所应该注意的问题
●对基于Spring 框架的系统进行单元测试和导入其ApplicationContext的一些技
巧
用Spring来写单元一般来说非常简单,由于Spring基于接口的设计,测试也很简单。
实现测试的最简单的步骤可以归结为,使用ClassPathXmlApplicationContext或者FileSystemXmlApplicationContext获得一个ApplicationContext的引用,调用它的方法。
●应该采用FileSystemXmlApplicationContext来获得ApplicationContext。然后
再获得我们的被测试类的对象
(2)在测试类中应该声明一个被测试类的接口对象
但采用这种方式的要求是,我们的测试是基于接口,而不实现类。
(3)ApplicationContext对象的获得应该在测试用例类中的setUp方法中实现protected void setUp() throws Exception
{
super.setUp();
String springXMLPath="C:\\SpringJ2SEApp\\SpringApplication.xml";
ApplicationContext applicationContext =
new
FileSystemXmlApplicationContext(springXMLPath);
upperAction = (Action) applicationContext.getBean("theUpperAction");
}
1.1.2对基于Spring框架的J2SE组件测试----采用两个不同的Project(工程)
1、在Eclipse中新建一个包含TestCase的Project
(1)名称为TestSpringJ2SEApp
(2)然后将被测试类所在的Project引入到本Project中,选择原来的Project中的*.jpx 文件
(3)添加JUnit的*.jar包文件
(4)在该测试项目中添加与Spring相关的Jar包
Spring.jar、commons-logging.jar、log4j.jar
2、在该测试Project中添加一个TestCase类
(1)TestCase Wizard
输入类名称为TestTransferAction,包名称为com.px1987.springexamle.test,基类为junit.framework.TestCase,被测试的类为
(2)最后点击“Finish”按钮
(3)编程该测试用例类
package com.px1987.springexamle.test;
import junit.framework.TestCase;
import com.px1987.springexample.springj2seapp.*;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext; public class TestTransferAction extends TestCase{
TrnsferAction oneUpperTrnsferAction=null;
TrnsferAction oneLowerTrnsferAction=null;
protected void setUp() throws Exception{
super.setUp();
ApplicationContext ctx=
new
FileSystemXmlApplicationContext("D:/JUnitExamp/SpringJ2SEApp/SpringApplicatio n.xml");
oneUpperTrnsferAction = (TrnsferAction) ctx.getBean("theUpperAction");
oneLowerTrnsferAction = (TrnsferAction) ctx.getBean("theLowerAction");
}
protected void tearDown() throws Exception
{
oneUpperTrnsferAction=null;
oneLowerTrnsferAction=null;
super.tearDown();
}
public void testUpperActionExecute()
{
String inputStr="Spring J2SE Application";
String actualResult=oneUpperTrnsferAction.doTransfer(inputStr);
String expectedReturn = "HELLO,UPPERACTION SPRING J2SE APPLICATION";
this.assertEquals(expectedReturn, actualResult);
}
public void testLowerActionExecute()
{
String inputStr="Spring J2SE Application";
String actualResult=oneLowerTrnsferAction.doTransfer(inputStr);
String expectedReturn = "hello,loweraction spring j2se application";
this.assertEquals(expectedReturn, actualResult);
}
}
4、执行该TestCase类
(1)右击TestCase类
(2)将产生出下面的结果
通过该方式,可以将测试用例类与被测试类之间彻底地分离。
5、采用TestSuit的方式来运行TestCase类
(1)新建一个测试套件
(2)选择我们的测试用例类
将产生出下面的内容
(3)以套件的方式来执行,将产生出下面的结果
1.1.3对UserInfoManage类中的doUserLogin方法进行测试的实例
1、添加一个测试用例
TestUserInfoManage,包名称为com.px1987.springexample.test,被测试的类为https://www.doczj.com/doc/9718078763.html,erInfoManage
2、编程TestUserInfoManage程序类
package com.px1987.springexample.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext; import junit.framework.TestCase;
import com.px1987.springexample.model.*;
import com.px1987.springexample.springj2seapp.TrnsferAction;
public class TestUserInfoManage extends TestCase{
UserInfoInterface oneUserInfoManage=null;
protected void setUp() throws Exception {
super.setUp();
String xmlFile="D:\\SpringExmp\\SpringJ2SEApp\\SpringApplication.xml";
ApplicationContext ctx=new FileSystemXmlApplicationContext(xmlFile);
oneUserInfoManage = (UserInfoInterface) ctx.getBean("oneUserInfoManage");
}
protected void tearDown() throws Exception {
super.tearDown();
}
public void testDoUserLoginSuccess() {
UserInfoVO oneUserInfo=new UserInfoVO();
oneUserInfo.setUserName("admin");
oneUserInfo.setUserPassWord("admin");
boolean actionReturn=oneUserInfoManage.doUserLogin(oneUserInfo);
this.assertTrue(actionReturn);
}
public void testDoUserLoginFailure() {
UserInfoVO oneUserInfo=new UserInfoVO();
oneUserInfo.setUserName("admin");
oneUserInfo.setUserPassWord("12345678");
boolean actionReturn=oneUserInfoManage.doUserLogin(oneUserInfo);
this.assertFalse(actionReturn);
}
public void testGetUserLogin(){
}
}
3、执行本程序代码
4、将出现下面的执行结果