这篇文章主要内容是使用junit对struts2的action进行测试。
必须的包:
spring-core-2.5.6.jar
spring-test-2.5.6.jar
struts2-junit-plugin-2.2.1.1.jar
注:测试action ,需用到spring。
主要的测试方法:
测试用例需继承 StrutsTestCase
重写setupBeforeInitDispatcher方法,相当与Beforeclass
方法 |
描叙 |
executeAction(String) |
根据action的URL链接,输出action的结果流数据(结果类型不是SUCCESS,可以是FreeMarker, velocity, JSP等)
|
getActionProxy(String) |
生成一个action的代理 |
injectStrutsDependencies(object) |
注入一个依赖对象 |
getActionMapping(String) |
获得ActionMapping |
findValueAfterExecute(String) |
action执行之后,从值栈中取值 |
|
|
属性 |
描叙 |
MockHttpServletRequest request |
requset传递给struts2 |
MockHttpServletResponse response |
用于测试struts2输出 |
MockServletContext servletContex |
The servlet context 传递给struts2 |
|
|
用例:
public class TestAction extends ActionSupport {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
junit:
package org.apache.struts2;
import org.apache.struts2.dispatcher.mapper.ActionMapping;
import java.util.HashMap;
import java.io.UnsupportedEncodingException;
import com.opensymphony.xwork2.ActionProxy;
import com.opensymphony.xwork2.Action;
import javax.servlet.ServletException;
public class StrutsTestCaseTest extends StrutsTestCase {
public void testGetActionMapping() {
ActionMapping mapping = getActionMapping("/test/testAction.action");
assertNotNull(mapping);
assertEquals("/test", mapping.getNamespace());
assertEquals("testAction", mapping.getName());
}
public void testGetActionProxy() throws Exception {
//set parameters before calling getActionProxy
request.setParameter("name", "FD");
ActionProxy proxy = getActionProxy("/test/testAction.action");
assertNotNull(proxy);
TestAction action = (TestAction) proxy.getAction();
assertNotNull(action);
String result = proxy.execute();
assertEquals(Action.SUCCESS, result);
assertEquals("FD", action.getName());
}
public void testExecuteAction() throws ServletException, UnsupportedEncodingException {
String output = executeAction("/test/testAction.action");
assertEquals("Hello", output);
}
public void testGetValueFromStack() throws ServletException, UnsupportedEncodingException {
request.setParameter("name", "FD");
executeAction("/test/testAction.action");
String name = (String) findValueAfterExecute("name");
assertEquals("FD", name);
}
}
分享到:
相关推荐
通过这个测试用例,我们可以深入理解Struts2中Action和JSP之间的交互、OGNL的使用以及配置文件的设置。此外,它还涉及到了如何在服务器端处理和打印从客户端传递的对象信息。掌握这些基础知识对于进行基于Struts2的...
11. **测试覆盖率**:确保测试用例覆盖了Action类的所有主要功能和异常情况,使用代码覆盖率工具检查测试的完整性。 12. **持续集成**:将测试用例整合到持续集成(CI)流程中,每当代码发生变化时,自动运行测试以...
在初学者的`struts2测试案例`中,我们可以学习到以下核心知识点: 1. **Action类**:Struts2的核心是Action类,它是业务逻辑的入口点。开发者通常需要创建一个继承自`com.opensymphony.xwork2.ActionSupport`或其...
在Struts2框架中,单元测试对于验证Action类、拦截器、结果类型以及其他核心组件的行为尤其关键。 在Struts2的4.2.4版本中,提供了专门的单元测试jar包,使得开发者能够方便地对Struts2的组件进行单元测试。这个jar...
5. **整合测试**:Struts2SpringUnitDemo还涉及到了框架的整合测试,这通常是为了确保Struts2的Action能够顺利地与Spring管理的bean交互。整合测试可能会包括检查Action是否能正确地从Spring容器获取依赖,以及在...
9. 测试:编写测试用例,包括单元测试和集成测试,验证各个组件的正确性和整个系统的功能完整性。 通过这个压缩包提供的jar包、配置文件和测试用例,开发者可以深入学习SSH整合的每一个环节,了解如何将这三个框架...
标题提到的“struts2测试工具”可能是指用于测试Struts2应用程序的工具或框架。在Java Web开发中,测试是确保代码质量、性能和安全性的关键步骤。Struts2的应用通常需要进行单元测试、集成测试和功能测试。以下是...
导入必要的测试库,如JUnit、Struts2测试相关的类。 2. **注解测试类**:使用`@Before`和`@After`注解定义测试前后的准备和清理工作,如初始化Struts2上下文,配置Action和ActionMapping。 3. **定义测试方法**:...
对于Struts2 Action,可以使用JUnit进行单元测试,验证Action方法的输出是否符合预期。对于MyBatis的DAO层,可以通过Mockito等工具模拟数据库环境,测试SQL查询和更新操作的正确性。此外,整体的系统测试包括功能...
压缩包文件“Struts2_1000_CharacterEncoding”可能包含了示例代码、配置文件或者测试用例,帮助读者理解并解决Struts2框架下处理中文POST参数的具体实现。通过学习这些内容,开发者能够确保在处理多语言环境下,...
通过上述分析,我们可以看出,"moke测试struts的action"涉及的是使用Struts框架构建Web应用时,对Action组件的测试和验证,包括了Action的配置、实现、结果处理以及可能的测试用例设计和执行。在实际项目中,这样的...
### Struts 1.2 如何测试 Action #### 背景介绍 在软件开发领域,测试驱动开发(Test-Driven Development, TDD)已经成为一种重要的软件开发理念。它强调先编写测试代码,再编写功能代码以通过这些测试,从而确保代码...
要使用StrutsDynForm,首先需要在Struts配置文件(struts-config.xml)中配置相应的Action和FormBean。Action通常会处理HTTP请求,而FormBean则用来封装表单提交的数据。配置示例如下: ```xml <action path="/...
1. **Struts配置**:在`struts-config.xml`文件中,你需要为处理文件上传的Action添加一个FormBean配置,声明一个`file`属性,该属性用于接收上传的文件: ```xml ``` 2. **ActionForm类**:创建一个...
在`struts.xml`配置文件中,你可以定义`<global-exception-mappings>`和`<action>`元素内的`<exception-mapping>`。全局异常映射适用于所有动作,而动作级别的映射只对特定动作生效。这些映射指定当特定类型的异常...
- 测试:编写测试用例,验证整合后的系统是否能正常工作,确保Action、Service和DAO层的交互无误。 4. **常见问题**:整合过程中可能会遇到如配置错误、依赖冲突、版本兼容性问题等。例如,描述中提到的"一点点...
在传统的Struts1应用程序中,Action类往往需要与`HttpServletRequest`和`HttpServletResponse`对象交互,这使得直接对Action类进行单元测试变得非常困难。因此,引入Mock技术就显得尤为重要。通过模拟`...
然后,你可以创建JUnit测试类,使用`@StrutsTest`注解标记测试类,以指示该类属于Struts2测试。在测试方法上使用`@Test`注解,并可以使用`@Action(value = "your-action-name")`来指定要测试的Struts2 Action。 ...
开发者可能编写了JUnit测试来验证Struts2的Action、Spring的服务层以及JPA的数据操作是否正常工作。这通常包括对Action的请求模拟,对Service方法的调用,以及对数据库操作的验证。 6. **项目结构**:一个典型的...
2. **Struts配置文件**:Struts框架的核心配置文件是`struts-config.xml`,在这个文件中定义了Action映射、数据源、国际化资源等关键设置。开发者需要在此配置Action的名称、对应的处理类以及转发路径等信息。 3. *...