`
yun342173024
  • 浏览: 73841 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

struts2 Action 测试

 
阅读更多
以前从来没有测试过Action,今天在struts的doc看到struts提供了一个junit插件,可以对action进行单元测试,这个插件是从struts 2.1.1开始有的,下面是一个小例子。
首先要搭建环境,struts2的jar包就说了,还要引入测试的jar包如下图


这里引入了spring的jar包,这个插件引用了spring的MockHttpServletRequest的模拟对象

struts配置文件

    <package name="testAction"   extends="struts-default" >
         <action name="actionTest"  class="action.TestAction"    method="doAction"  >
         <result name="success">/aa.jsp</result>
         <result name="input">/left.jsp</result>
       </action>
      </package>
 


要测试的action
   package action;

import com.opensymphony.xwork2.ActionSupport;

public class TestAction extends ActionSupport  {
 
	private User u;
	
	public User getU() {
		
		
		return u;
	}

	public void setU(User u) {
		this.u = u;
	}
    
	/**
	 * 一个简单的用户名和密码的验证
	 * @return
	 * @throws Exception
	 */
	
	public String doAction()throws Exception{
		
		if(u.getPassword().equals("admin") && u.getUserName().equals("admin")){
			return SUCCESS;
		}else{
			return INPUT;
		}
		
	}
	
}
  


测试代码,测试类继承插件提供的抽象类StrutsTestCase,这个类提供了几个重要的方法
   package com.test;



import org.apache.struts2.StrutsTestCase;
import org.apache.struts2.dispatcher.mapper.ActionMapping;
import org.junit.Test;

import action.TestAction;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionProxy;

public class TestUserAction extends StrutsTestCase {
   
	
	
	
	@Test
	public void testGetActionMapping(){

		ActionMapping mapping = this.getActionMapping("/actionTest.action");
		assertNotNull(mapping);
		assertEquals("/",mapping.getNamespace());
		assertEquals("actionTest",mapping.getName());
		
		
	}
	
	@Test
	public void testGetActionProxy()throws Exception {
		//设置请求参数在调用getActionProxy
		request.setParameter("u.userName","admin");
		request.setParameter("u.password","admin");
	
		
		ActionProxy proxy = this.getActionProxy("/actionTest.action");
		assertNotNull(proxy); 
		String result = proxy.execute();
		TestAction action = (TestAction) proxy.getAction();
		assertEquals(Action.SUCCESS,result);
		assertEquals("admin",action.getU().getUserName());
		
		
		
	}
	
	
	
	
}



下面介绍一下StrutsTestCase几个方法

方法名字方法描述
executeAction(String)接收一个Action的url作为参数,返回这个action的输出,这个结果不是像result的success,而是像FreeMarker, velocity这些模版的结果
getActionProxy(String)构造一个action的代理对象,用来调用execute(),返回action的执行结果像"success"。
getActionMapping(String)返回这个action的映射信息对象
findValueAfterExecute(String)在action执行后,从值栈中根据属性名称取值


几个重要的字段

字段名称描述
MockHttpServletRequest request模拟请求对象,用来设置请求参数
MockHttpServletResponse response可以用这个对象测试输出,响应头信息等
MockServletContext servletContextservlet的上下文

 

  • 大小: 11.7 KB
分享到:
评论

相关推荐

    Struts2SpringUnitDemo单元测试

    5. **整合测试**:Struts2SpringUnitDemo还涉及到了框架的整合测试,这通常是为了确保Struts2的Action能够顺利地与Spring管理的bean交互。整合测试可能会包括检查Action是否能正确地从Spring容器获取依赖,以及在...

    Struts2单元测试

    在Struts2框架中,单元测试对于验证Action类、拦截器、结果类型以及其他核心组件的行为尤其关键。 在Struts2的4.2.4版本中,提供了专门的单元测试jar包,使得开发者能够方便地对Struts2的组件进行单元测试。这个jar...

    测试struts2中action

    ### 代码解析:测试Struts2中的Action #### 1. 导入必要的包 ```java package examples; import servletunit.struts.MockStrutsTestCase; import java.io.*; ``` 这里导入了`MockStrutsTestCase`,这是...

    struts2测试工具

    7. **IntelliJ IDEA或Eclipse的Struts2插件**:这些IDE插件可能包含特定于Struts2的测试支持,比如生成Action的测试模板。 压缩包内的"鬼哥struts2测试工具.exe"可能是一个由个人开发者或社区创建的专用测试工具,...

    struts2测试案例

    在`test_Struts2`这个压缩包中,可能包含了创建一个简单的Struts2应用的所有必要组件,如Action类、配置文件、JSP页面和可能的测试用例。通过分析和运行这些示例,初学者可以快速掌握Struts2的基本用法和流程,为...

    Struts2框架单元测试代码

    2. **注解测试类**:使用`@Before`和`@After`注解定义测试前后的准备和清理工作,如初始化Struts2上下文,配置Action和ActionMapping。 3. **定义测试方法**:为每个Action方法创建一个测试方法,使用`@Test`注解...

    Struts2 in action(struts2实战)

    作为一个基于Action和基于拦截器的框架,Struts2提供了丰富的功能,使得开发者能够构建可维护、可扩展的Web应用。下面我们将深入探讨Struts2的主要特性、工作原理以及如何在实际开发中运用。 1. **核心概念**: - ...

    struts2 使用action属性接收中文参数(post提交)

    压缩包文件“Struts2_1000_CharacterEncoding”可能包含了示例代码、配置文件或者测试用例,帮助读者理解并解决Struts2框架下处理中文POST参数的具体实现。通过学习这些内容,开发者能够确保在处理多语言环境下,...

    moke测试struts的action

    通过上述分析,我们可以看出,"moke测试struts的action"涉及的是使用Struts框架构建Web应用时,对Action组件的测试和验证,包括了Action的配置、实现、结果处理以及可能的测试用例设计和执行。在实际项目中,这样的...

    struts 2 action 动态调用

    ### Struts 2 Action 动态方法调用详解 #### 一、引言 在Struts 2框架中,Action动态方法调用是一项非常实用的功能。它允许开发者在一个Action类中定义多个处理方法,而不仅仅局限于传统的`execute()`方法。这种...

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

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

    Struts2InAction中文+源代码

    6. **运行与调试**:将SampleApplication部署到Web容器(如Tomcat),进行测试和调试,体验Struts2的实际运行效果。 总的来说,《Struts2 in Action》中文版结合SampleApplication源代码,为Java Web开发者提供了...

    Struts 1.2 如何测试ActionPDF

    ### Struts 1.2 如何测试 Action #### 背景介绍 在软件开发领域,测试驱动开发(Test-Driven Development, TDD)已经成为一种重要的软件开发理念。它强调先编写测试代码,再编写功能代码以通过这些测试,从而确保代码...

    struts2.3.7 - 集成测试案例

    2. **Interceptor测试**:Interceptor是Struts2的核心特性,它们在Action调用前后执行,提供如登录验证、日志记录等功能。测试Interceptor需要确保它们在正确的时间点介入,并按照预期处理请求。 3. **Result类型...

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

    总的来说,“Struts2之Servlet API及单元测试初识案例struts005”旨在帮助开发者理解Struts2如何利用Servlet API进行请求处理,并介绍如何编写针对Struts2 Action的单元测试。通过深入学习这些内容,可以提高Java ...

    struts2项目测试成功的jar包

    1. **Struts2 Core**: 包含了框架的主要组件,如Action、Result、Interceptor等,它是Struts2的基础,处理HTTP请求并执行业务逻辑。 2. **Struts2 Plugins**: Struts2提供了一系列插件来增强功能,如Tiles、JSON、...

    Struts2_Action

    Struts2 Action是该框架中的核心组件,用于处理用户请求并返回相应的响应。 首先,要了解Struts2 Action的开发,需要熟悉其基本概念。Struts2 Action本质上是一个Java类,它包含了处理用户请求的业务逻辑。为了将这...

    struts1和struts2的区别

    - **Struts2**: Struts2中的Action更像是工厂模式下的产品,每个Action实例都是线程安全的。Struts2提供了ActionSupport基类来简化Action的实现。Action本身可以是任何实现了特定接口的Java对象,甚至是普通的POJO。...

    struts2jar包

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

    struts中测试action

    JUnit是Java常用的单元测试框架,可以与Struts2的TestNG插件结合,方便地对Action进行测试。以下是一个简单的测试案例: ```java import org.junit.Test; import static org.junit.Assert.assertEquals; public ...

Global site tag (gtag.js) - Google Analytics