<<项目架构那点儿事>>——快速构建Junit用例

欢迎访问我的社区资源论坛http://www.javadt.com

【前言】按照惯例,在实际项目中我往往会对自己编写的程序进行测试,当测试通过后才能将其用于实战中,当然,编写单元测试是不可避免的,可以直接清晰的检验出我们程序的可靠性、可只执行性,从中发现问题从而得到及时的解决,这里我就谈谈我们项目里Junit编写规范、模板,其中包括对web层、业务层的分布单元测试。

【目录】

-----1.Struts2Junit实现Web层单元测试

-----2.SpringJunit实现业务层单元测试

【内容】

一、编写struts2Junit(依赖包:struts2-junit-plugin-2.1.8.jar,junit4,xwork-core-2.2.1.jar,struts2-core-2.2.3.jar,版本号可以任意struts2版本),我以User为例子,下面是UserWebJunit:

  1. /***@authorfisher

*@descriptionstruts2单元测试用例模板

*/

publicclassStruts2JunitTemplateextendsStrutsTestCase{

/**

*@description测试ActionMapping,验证资源是否请求

*/

@Test

publicvoidtestGetActionMapping(){

ActionMappingmapping=getActionMapping("/test/testAction.action");

assertNotNull(mapping);

assertEquals("/test",mapping.getNamespace());//验证命名空间

assertEquals("testAction",mapping.getName());//验证Action名称是否对应

}

/**

*@description创建Action代理,验证请求参数、页面跳转

*@throwsException

*/

@Test

publicvoidtestGetActionProxy()throwsException{

//在执行Action方法之前,对request进行请求参数设置

request.setParameter("name","fisher");

ActionProxyproxy=getActionProxy("/test/testAction.action");

assertNotNull(proxy);

proxy.setExecuteResult(false);

@SuppressWarnings("rawtypes")

UserActionaction=(UserAction)proxy.getAction();//通过ActionProxy获得UserAction实例

assertNotNull(action);

Stringresult=proxy.execute();//执行execute方法,返回结果

assertEquals(Action.SUCCESS,result);//比对返回结果是否和UserAction中的执行结果一致

}

}

复制代码
          二、编写SpringJunit(依赖包:spring-test-3.0.4.RELEASE.jar,junit4,以及其他的spring核心包),还是以User为例子,我们编写UserTestUnit来验证我们后台的方法,如下:
  1. /***@authorfisher

*@description用户业务测试

*/

//使用springJunit4

@RunWith(SpringJUnit4ClassRunner.class)

//spring配置文件加载(locations为文件路径)

@ContextConfiguration(locations={

"classpath:spring/application-hibernate.xml",

"classpath:spring/application-common-service.xml",

"classpath:spring/application-sys-service.xml"})

publicclassUserTestJunit{

@Autowired

UserServiceuserService;//自动注入userService

/**

*@description测试查询用户

*@throwsException

*/

@Test

publicvoidquery()throwsException{

Listresult=userService.getAllEmployee();

Assert.notEmpty(result);

}

/**

*@description测试用户添加

*@throwsException

*/

@Test

publicvoidsave()throwsException{

Useruser=newUser();

user.setUsrCode("test001");

user.setUsrName("test");

user.setPassword("123");

user.setIdCard("513029198503140026");

user.setEmail("[email protected]");

Useru=userService.save(user);

Assert.notNull(u);

org.junit.Assert.assertEquals("test",user.getUsrName());

}

/**

*@description测试用户更新

*@throwsException

*/

@Test

publicvoidupdate()throwsException{

Useruser=newUser();

user.setUsrCode("test001");

user.setUsrName("test");

user.setPassword("123");

user.setIdCard("513029198503140026");

user.setEmail("[email protected]");

Useru=userService.update(user);

Assert.notNull(u);

org.junit.Assert.assertEquals("test",user.getUsrName());

}

/**

*@description测试用户删除

*@throwsException

*/

@Test

publicvoiddel()throwsException{

Useruser=newUser();

user.setUserId("1");

Useru=userService.delete(user);

Assert.notNull(u);

org.junit.Assert.assertEquals("1",user.getUserId());

}

}

复制代码
【总结】单元测试不仅限于此,灵活性比较大,要结合实际进行编写,上面两种测试是按照我们项目中规范编写,大家可以作为参考,自我觉得还是比较实用而且用注解方式比较方便。

相关推荐