我们都知道struts2有自己的对象工厂即obejectFactory,但是你也可以使用spring来作为对象工厂,继承了spring之后的单元测试要加什么东西呢?
答案是要加入下面的这些包:spring-web-2.5.6.jar,spring-context-2.5.6.jar,spring- beans-2.5.6.jar,struts2-spring-plugin-2.1.8.1.jar这四个包,在web.xml文件中还要加入如下的代码行:
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>/WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml</param-value>
- </context-param>
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
如果你要编写测试类,要继承StrutsSpringTestCase,一定要这样做,我的测试类如下:
- import org.apache.struts2.StrutsSpringTestCase;
- import org.apache.struts2.dispatcher.mapper.ActionMapping;
- import com.opensymphony.xwork2.Action;
- import com.opensymphony.xwork2.ActionProxy;
- public class HelloWorldSpringTest extends StrutsSpringTestCase {
- // @Override
- // public String getContextLocations() {
- // return "edu/ku/it/si/tutorial/action/TestAccountAction-context.xml";
- // }
- public void testGetActionMapping() throws Exception {
- ActionMapping mapping = getActionMapping("/begin/helloWorld.action");
- assertNotNull(mapping);
- assertEquals("/begin", mapping.getNamespace());
- assertEquals("helloWorld", mapping.getName());
- }
- public void testGetActionProxy() throws Exception {
- request.setParameter("username", "FD");
- ActionProxy proxy = getActionProxy("/begin/helloWorld.action");
- assertNotNull(proxy);
- HelloWorld action = (HelloWorld) proxy.getAction();
- assertNotNull(action);
- String result = proxy.execute();
- assertEquals(Action.SUCCESS, result);
- assertEquals("FD", action.getUsername());
- }
- }
测试类的内容和上一篇一样,只是继承类不一样,StrutsSpringTestCase是StrutsTestCase的子类,这个单元测试默认读取配置文件applicationContext.xml的位置是类路径的根目录,如果你把这个文件放在不同位置或者取了一个不同的名称可以通过覆盖父类中的protected java.lang.String getContextLocations()来指定你的配置文件。
其他的地方和之前那篇日志中的一样,但是之前写的那个没有和spring继承的单元测试就不能使用了,如果你运行会报下面的错误:
SEVERE: [19:33.501] ********** FATAL ERROR STARTING UP STRUTS-SPRING INTEGRATION **********
Looks like the Spring listener was not configured for your web app!
Nothing will work until WebApplicationContextUtils returns a valid ApplicationContext.
You might need to add the following to web.xml:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
SEVERE: [19:33.541] Dispatcher initialization failed
正如你所见到的我们已经指定了监听器,解决办法是吧你的测试类的父类改成StrutsSpringTestCase就可以解决问题。
原文完,详细见:http://kang36897.blog.163.com/blog/static/170473732010710101238126/
----------------------------------
后记:
网上在struts2+Spring编写单元测试的问题里,发现大多问题是spring的配置文件applicationContext.xml的路径或者多个时如何修改。其实很不明白为什么不在 applicationContext.xml主文件内倒入其他配置文件?这样web.xml不用配多个并且很清晰,而修改名字连applicationContext.xml都不存在的话我觉得是自己找事做罢了。
- <import resource="classpath:spring-datasource.xml" />
- <import resource="classpath:spring-dao.xml" />
- <import resource="classpath:spring-business.xml" />
- <import resource="classpath:spring-struts.xml" />
推荐使用这种方法。
相关推荐
python+selenium+unittest环境搭建1
使用python+selenium+unittest自动化测试框架编写的一个demo,可实现测试用例管理,批量执行用例,生成测试报告,自动发送邮件等功能
Python+selenium+HTMLTestRunner+unittest 测试框架程序及文档,框架基础已可以正常使用,要学习Web UI自动化的可下载,高手绕道!这个文档的分数在哪里修改不知道,默认5分不是来赚分设置的,要是有需要直接约留下...
1、使用HTMLTestRunner生成测试报告; 2、添加测试套件,运行一个文件执行所有测试用例; 3、只在测试执行前打开浏览器,所有用例执行结束后关闭浏览器。(解决反复启动/关闭driver导致的执行效率问题) 这个源码...
1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,...
资源主要利用python3+unittest+request+ddt框架进行接口测试。
Python3+unittest+requests+excel实现接口自动化测试框架源码
python+selenium+unittest 只启动一次浏览器方法(csdn)————程序
主要介绍了Python + Requests + Unittest接口自动化测试,结合具体实例形式分析了Python使用Requests与Unittest模块实现接口自动化测试相关操作技巧,需要的朋友可以参考下
环境:python3 + unittest + requests,Excel管理测试用例,HTMLTestRunner生成测试报告,测试生成后邮件发送测试报告。
自动化测试,python,selenium,unittest
python+unittest框架最新版UI自动化设计思路(csdn)————程序
通过Python+seleunim+ddt+unittest自动化数据驱动心得的自动化UI测试,观看需求有一定的代码阅读能力,不然你会晕或者看不明白
selenium方法的二次封装使代码变得简洁,封装的代码使用起来可读性也比较高
简单易上手,通俗易懂,一看就会
主要介绍了python+unittest+requests实现接口自动化的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Git+Jenkins+Unittest+bs4爬虫+Page Object Python架构师级接口测试高级课
对教务管理系统设计测试用例,利用selenium+unittest框架编写UI自动化测试脚本,用程序执行测试用例,自动生成测试报告,有需要论文参考也可私我~~
一、环境安装,含网盘地址(该自动化使用的是:Python+PyCharm+Selenium+ie(或者谷歌)+unittest(或pytest)+HTMLTestRunner+jenkins+录制工具(selenium ide) 二、使用HTMLTestRunner生成测试报告,自行下载...
自己学习写的接口自动化测试工具,数据用excel驱动,python+unittest+excel