`
阅读更多

现在的struts2 版比 struts1  测试显的更简单了,我们只需引入struts-junit.jar插件和spring的一些架包即可进行测试.下面的这些架包是必需的(以struts2.1.8.1版为例):


struts2-core-2.1.8.1.jar


xwork-core-2.1.6.jar


freemarker-2.3.15.jar


struts2-junit-plugin-2.1.8.1.jar


commons-logging-1.0.4.jar


commons-fileupload-1.2.1.jar


junit-4.8.2.jar


spring-test-2.5.6.jar


spring-core-2.5.6.jar(如果你还想使用Spring的其他功能,直接引入独立包spring.jar就行了)


以上都是必需的,不过特别要注意的是在不用spring当JavaBean工厂的时候,千万别加入struts2-spring-plugin-2.1.8.1.jar 这个架包,要不然你运行测试程序时它死活不让你通过,就在控制台一直提醒你未配置spring监听.

 

下面写些例子来说明怎么测试struts2:

 

 

被测试的Action:

 

public class MyAction extends ActionSupport implements ServletResponseAware{

	private String name;
	
	private HttpServletResponse response;

	@Override
	public String execute() throws Exception {
		response.setContentType("text/html; charset=utf-8");
		response.getWriter().write("Hello world!");
		response.getWriter().flush();
		return SUCCESS;
	}
	
	public String hello() throws Exception {
		//...
		return "hello";
	}

	@Override
	public void setServletResponse(HttpServletResponse arg0) {
		this.response = arg0;
	}
	 //name's getter and setter
}

 

 

测试类:

 

 

public class MyActionTest extends StrutsTestCase {
	//测试Action配置文件是否正确
	public void testGetActionMapping() {
        ActionMapping mapping = getActionMapping("/test");
        assertNotNull(mapping);
        assertEquals("/", mapping.getNamespace());
        assertEquals("test", mapping.getName());
    }
	//测试Action代理
	public void testGetActionProxy() throws Exception {
        //set parameters before calling getActionProxy
        request.setParameter("name", "Chase");
        
        ActionProxy proxy = getActionProxy("/test");
        assertNotNull(proxy);

        MyAction action = (MyAction) proxy.getAction();
        assertNotNull(action);

        String result = proxy.execute();
        assertEquals(ActionSupport.SUCCESS, result);
        assertEquals("Chase", action.getName());
    }
	
	//测试重写的execute()方法
	public void testExecuteAction() throws ServletException, UnsupportedEncodingException {
        String output = executeAction("/test");
        assertEquals("Hello world!", output);
    }
	
	//测试自定义方法
	public void testMyMethod() throws Exception {
		ActionProxy proxy = getActionProxy("/helloAction");
        assertNotNull(proxy);

        MyAction action = (MyAction) proxy.getAction();
        assertNotNull(action);

        String result = proxy.execute();
        assertEquals("hello", result);
	}

	//测试value stack
	public void testGetValueFromStack() throws ServletException, UnsupportedEncodingException {
        request.setParameter("name", "Chase");
        executeAction("/test");
        String name = (String) findValueAfterExecute("name");
        assertEquals("Chase", name);
    }
}

 

 

 

struts.xml部分:

 

 

<package name="testPackage" extends="struts-default" namespace="/">
	<action name="test" class="com.chase.action.MyAction">
		<result>/test-success.jsp</result>
	</action>
	<action name="*Action" class="com.chase.action.MyAction" method="{1}">
		<result name="{1}">/test-success.jsp</result>
	</action>
</package>

 

 

 

 

分享到:
评论

相关推荐

    Struts2SpringUnitDemo单元测试

    Struts2SpringUnitDemo是一个示例项目,展示了如何在Java应用程序中将Struts2和Spring框架进行集成,并进行单元测试。这两个框架都是Java Web开发中的关键组件,Struts2负责控制层逻辑,Spring则提供了全面的依赖...

    Struts2之Servlet API及单元测试初识案例struts005

    在这个“Struts2之Servlet API及单元测试初识案例struts005”中,我们将探讨Struts2如何与Servlet API结合使用,以及如何进行单元测试。 Servlet API是Java EE平台的核心部分,用于构建动态Web应用程序。Struts2...

    Struts2框架单元测试代码

    在Struts2中,我们通常使用JUnit作为单元测试工具,结合Mockito等库来模拟依赖,进行隔离测试。 首先,了解Struts2的执行流程:请求到达Servlet容器后,通过StrutsPrepareAndExecuteFilter转发到Struts2的核心拦截...

    Struts2+Spring+hibernate中对action的单元测试环境搭建[总结].pdf

    Struts2+Spring+Hibernate 中的Action单元测试环境搭建 在软件开发中,单元测试是一种非常重要的测试方法,可以帮助我们确保代码的可靠性和稳定性。在 Struts2+Spring+Hibernate 框架中,对 Action 的单元测试环境...

    struts2测试工具

    Struts2的应用通常需要进行单元测试、集成测试和功能测试。以下是一些可能的测试工具和方法: 1. **JUnit**:这是一个Java编程语言的单元测试框架,可以用来编写和运行针对Struts2 Action类的测试用例。 2. **...

    struts2jar包

    struts2-junit-plugin.jar则帮助进行单元测试。这些插件根据实际需求选择引入。 6. **其他依赖的jar包**:Struts2运行还需要一些其他的库,如freemarker或velocity用于模板引擎,javassist用于动态类生成,log4j或...

    struts1和struts2的区别

    - **Struts2**: Struts2支持更加灵活的单元测试方式。Action可以通过依赖注入的方式初始化,因此可以更容易地模拟出不同的测试场景。 #### 表单处理 - **Struts1**: 使用ActionForm来封装表单数据。ActionForm是一...

    struts2 API帮助文档

    - Struts2有内置的测试工具,如Struts2 TestNG插件,便于进行单元测试和集成测试。 综上,这个“struts2 API帮助文档”对于开发人员深入理解和使用Struts2框架至关重要,涵盖了框架的各个方面,从基础组件到高级...

    mock struts1 测试

    对于基于Struts框架的应用程序来说,如何有效地进行单元测试尤为重要。Struts1作为早期广泛使用的MVC框架之一,在很多遗留系统中仍然占有一席之地。而Mock Struts1测试则是针对这一需求提出的一种解决方案。 #### ...

    struts2所用到的jar包

    10. **测试支持**:Struts2提供了测试框架,如Struts2 TestNG插件,方便进行单元测试和集成测试,确保应用的正确性。 综上所述,Struts2的核心包和IO包是构建基于Struts2的应用程序不可或缺的部分,它们为开发者...

    struts2 jar包

    10. **测试支持**:Struts2提供了JUnit集成,方便开发者进行单元测试和集成测试。 总的来说,Struts2 jar包是实现MVC架构的利器,它通过组件化、插件化的设计,使得开发者可以快速构建健壮、可维护的Web应用程序。...

    Struts2 in action(struts2实战)

    - Struts2提供了测试框架,如Struts2 TestNG Plugin,便于进行单元测试和集成测试。 学习并掌握Struts2框架,对于理解Web应用的架构设计和提升开发效率至关重要。通过阅读《Struts2 in action》这本书,你可以深入...

    基于Struts2的留言板系统.zip

    12. **测试**: 使用JUnit等单元测试工具对Action类进行测试,确保业务逻辑的正确性。Struts2也支持Mock测试,模拟请求来测试Action的响应。 13. **部署与运行**: 最后,将整个项目打包成WAR文件,部署到应用服务器...

    基于struts2商品管理项目

    10. **测试**:项目可能包含了单元测试和集成测试,使用JUnit和Mockito等工具对Action和DAO层进行测试,确保各个模块的功能正确无误。 综上所述,基于Struts2的商品管理项目涵盖了Web开发的多个重要方面,包括框架...

    Migrating From Struts1 To Struts2

    单元测试支持不足,只能进行集成测试;近年来项目发展停滞,社区活跃度下降。 #### WebWork/Struts2概述 WebWork/Struts2是Struts1的后续版本,它在设计上做了重大改进,提供了更加强大且灵活的功能。主要特点如下...

    Struts2运行流程测试

    在本文中,我们将深入理解Struts2的运行流程,并通过单元测试来验证其完整的工作机制,特别是涉及拦截器、验证框架和Result。 首先,让我们回顾一下Struts2的运行流程。当一个HTTP请求到达服务器时,Struts2框架会...

Global site tag (gtag.js) - Google Analytics