首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

一个Struts2组合Spring测试的方法

2012-11-17 
一个Struts2结合Spring测试的方法??最近在学习Struts2,进行测试驱动开发,对于struts2与Spring集成的测试,S

一个Struts2结合Spring测试的方法

??最近在学习Struts2,进行测试驱动开发,对于struts2与Spring集成的测试,Struts2给出了一个插件struts2-junit-plugin-2.1.8.1.jar,这个插件需要spring-test.jar包的支持,所有需要测试的Action类都继承StrutsSpringTestCase。这个测试要求只能用个application.xml文件,而且必须放到类路径根目录下面。在我们开发中往往编写许多以application开头的部署文件,一般也不在类路径下面存放,例如我一般习惯在WEB-INF目录下建立一个config文件夹,将spring的部署文件都放到config文件夹下面。但是用StrutsSpringTestCase类不能解决改问题,我查看了一下StrutsSpringTestCase的原代码,代码如下:

public class SpringBeanFactoryMock extends StrutsSpringTestCase {@Overridepublic void setUp() throws Exception {super.setUp();}@Override    protected void setupBeforeInitDispatcher() throws Exception {        GenericXmlContextLoader xmlContextLoader = new GenericXmlContextLoader();        applicationContext = xmlContextLoader.loadContext(getContextLocation());        servletContext.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, applicationContext);    }public String[] getContextLocation(){URL classUrl = SpringBeanFactoryMock.class.getResource("");String path = classUrl.getPath();try {path = URLDecoder.decode(path, "UTF-8");} catch (UnsupportedEncodingException e) {e.printStackTrace();}path =  path.substring(1 , path.indexOf("WEB-INF"))+ "WEB-INF/";File configPath = new File(path);String[] applicationContexts = configPath.list(new FilenameFilter(){public boolean accept(File dir, String name){if(name.toLowerCase().startsWith("applicationcontext")){return true;}return false;}});for(int i=0;i<applicationContexts.length;i++){applicationContexts[i] = "file:"+path +  applicationContexts[i];}return applicationContexts;}}

?

??? 以后我们测试Struts2的Action类时候,只要继承SpringBeanFactoryMock类就可以了。

1 楼 wxlmcqueen 2010-01-19   试试,如果真能行,那真谢谢啦。 2 楼 mangoo1 2010-02-23   不应该把 原来的 setUp 方法 override,只需要重载 StrutsSpringTestCase 里面的 getContextLocations 就可以了。 3 楼 mmBlue 2010-05-08   搜索资料时查到此贴了,不知这个插件对注解的service属性有用没,目前项目中采用的EasyMock测试的。

热点排行