Apache Struts 2 Documentation > Home > Guides > Plugin Developers Guide > JUnit Plugin
Apache Struts2 文档之 JUnitPlugin
JUnit Plugin 提供了与流行的单元测试框架JUnit的集成
此插件提供了一个基本的StrutsTestCase类,他能用于子类化Struts2组件的测试。并用于Struts2本身的组件和很多绑定插件的测试。此插件也提供了StrutsSpringTestCase来支持用Spring作为对象工厂的 action测试
更多细节,请查看ActionTest(%struts-2.2.3.1%\docs\WW\testing-actions.html)
Struts Actions(未使用Spring)
不使用Spring来测试Actions,要继承StrutsTestCase。以下实例显示了测试Actions的两种不同方式:
<struts>
<constant name="struts.objectFactory" value="spring"/>
<package name="test" namespace="/test" extends="struts-default">
<action name="testAction" class="org.apache.struts2.TestAction">
<result type="freemarker">/template.ftl</result>
</action>
</package>
</struts>
MyNote:
以上代码表明 struts的对象工厂为spring,并定义了一个TestAction
Action:
public class TestAction extends ActionSupport {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
MyNote:
TestAction仅仅有一个name属性及其getter,setter
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 {//MyNote:需要继承StrutsTestCase
/**MyNote:测试 是否存在请求的Action路径,并对命名空间及action的名字分别进行测试*/
public void testGetActionMapping() {
ActionMapping mapping = getActionMapping("/test/testAction.action");
assertNotNull(mapping);
assertEquals("/test", mapping.getNamespace());
assertEquals("testAction", mapping.getName());
}
/**MyNote: 模拟带参数的某个请求,并测试其结果是否正确
在StrutsTestCase的超类中提供了 request
通过获得ActionProxy来注入参数
*/
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());
}
/**MyNote:直接执行某个Action来判断输出*/
public void testExecuteAction() throws ServletException, UnsupportedEncodingException {
String output = executeAction("/test/testAction.action");
assertEquals("Hello", output);
}
/**MyNote:在执行Action后测试值栈中的值*/
public void testGetValueFromStack() throws ServletException, UnsupportedEncodingException {
request.setParameter("name", "FD");
executeAction("/test/testAction.action");
String name = (String) findValueAfterExecute("name");
assertEquals("FD", name);
}
}
模板:
如果你使用JSP作为模板引擎,你将不能在容器外测试Action的输出。EmbeddedJSP Plugin(内嵌的JSP插件)可用于越过这种限制,并能在classpath(类路径)和容器外使用JSP
方法描述
以下是StrutsTestCase中定义的工具方法和Mock'对象来简化测试。
方法名 描述
executeAction(String ) 转换action的URL,并返回action的输出。这个输出不是Action的result( 如"success"),而是并写入的结果流。要使用这个action 必须使用一个来自classpath的结果类型,如Freemarker,velicity等等,如果你使用了EmbeddedJspPlugin 你也可以使用JSP
getActionProxy(String) 构建一个ActionProxy.可通过在返回的代理对象上调用execute方法调用Action,exection方法的返回结果是action结果(如"success")
getActionMapping(String) 获得参数url的ActionMapping对象
injectStrutsDependencies (Object) 注入Struts依赖的对象
findValueAfterExecute(String) 在Action执行后,在值栈中查找一个对象
属性 描述
MockHttpServletRequest request 传给Struts的request对象。确保在调用getActionProxy这样的方法前在mock对象中设置参数
MockHttpServletResponse response 传给Struts的response对象。你可以使用这个类测试输出和响应头等
MockServletContext servletContext 传给Struts的ServletContext对象
使用Spring的StrutsAction
确保将SpringPlugin依赖加入到pom.xml中(MyNoe:如果不使用Maven,直接将插件jar拷入项目lib即可)
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>STRUTS_VERSION</version>
</dependency>
如果你使用Spring作为对象工厂。StrutsSpringTestCase可用于编写你的单元测试。这个类继承自StrutsTestCase并有一个ApplicationContext类型的applicationContext属性。
SpringContext 默认从classpath*:applicationContext.xml进行加载。为提供一个不同的位置,请重写getContextLocations.
分享到:
相关推荐
`struts2-junit-plugin-2.1.8.1.jar` 是一个特定版本的Struts2 JUnit插件,它的版本号是2.1.8.1。这个插件允许开发者在JUnit测试环境中集成Struts2的应用,以便于进行功能测试和集成测试。通过这个插件,你可以直接...
标签:apache、struts2、plugin、struts、json、jar包、java、API文档、中文版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,...
`license.txt`文件通常包含软件的许可协议信息,对于`struts2-junit-plugin-2.1.6.jar`来说,这意味着使用这个插件需要遵守其中指定的条款和条件,例如Apache License 2.0等常见的开源许可证。 总的来说,`struts2-...
Struts2-dojo-plugin-2.2.1.jar 是一个针对Apache Struts2框架的扩展插件,主要用于增强Struts2应用的用户界面交互性,特别是通过集成Dojo JavaScript库来提供丰富的AJAX功能和用户体验。这个插件是Struts2与Dojo ...
struts 2的api查询文档, Ian Roughley 写的APress - Practical Apache Struts2 Web 2.0 Projects.2007.pdf 是外文的,正好可以锻炼下英文阅读
Struts2 JSON Plugin是针对Apache Struts2框架的一个重要组件,版本为2.3.8。这个插件主要的功能是让Struts2应用程序能够轻松地处理JSON(JavaScript Object Notation)数据格式,使得Web应用可以方便地进行JSON序列...
Struts2-Spring-Plugin-2.0.11.1.jar 是一个专门为Apache Struts2框架设计的插件,其主要目的是实现Struts2与Spring框架的集成。这个插件使得开发者能够在Struts2应用中无缝地使用Spring进行依赖注入(Dependency ...
Apache Struts 2.5.28.3是一个优雅的、可扩展的框架,用于创建企业级 Java Web 应用程序。它可以在完整发行版中使用,也可以作为单独的库、源代码、示例和文档发行版使用。Struts 2.5.28.3 是 2.5 系列中 Struts 的...
Apache Struts 2 所有依赖项(struts-2.5.28.3-lib.zip),Apache Struts 2.5.28.3是一个优雅的、可扩展的框架,用于创建企业级 Java Web 应用程序。它可以在完整发行版中使用,也可以作为单独的库、源代码、示例和...
Apache Struts2 是一个流行的Java Web开发框架,它为开发者提供了构建MVC(Model-View-Controller)架构的工具和便利。然而,Struts2框架在过去曾曝出一系列的安全漏洞,其中最严重的一种允许攻击者通过HTTP请求直接...
Apache Struts 2 是一个基于模型-视图-控制器(MVC)架构的开源Web应用程序框架,用于构建Java EE(Enterprise Edition)应用。这个框架旨在简化开发过程,并提供一种更结构化的方式来组织代码,提高可维护性和重用...
《Apache Struts 2 Web Application Development》是一本深入探讨如何使用Apache Struts 2框架进行Web应用程序开发的专业书籍。出版于2009年,它为开发者提供了丰富的知识和实践指导,帮助他们掌握这一强大的MVC...
S2-053漏洞全称为"Struts2 REST Plugin远程代码执行",是Apache Struts2框架中的一个严重安全缺陷。该漏洞主要存在于Struts2的REST插件中,当用户提交特定格式的HTTP请求时,可能导致远程代码执行(RCE)。远程代码...
1.严格过滤 Content-Type 、filename里的内容,严禁ognl表达式相关字段。 2.如果您使用基于Jakarta插件,请升级到Apache ...--来源 http://mvnrepository.com/artifact/org.apache.struts/struts2-spring-plugin/2.3.32
struts2-json-plugin-2.2.3.1能用的包
<plugin class="org.apache.struts2.spring.plugin.SpringPlugin"> <param name="contextConfigLocation">classpath:spring/applicationContext.xml </plugin> <!-- ...其他配置... --> </struts> ``` 在...
Apache Struts2是一个高度灵活且功能丰富的JAVA EE(Java Platform, Enterprise Edition)Web应用程序框架,它的设计目标是为了简化开发过程并提高代码的可维护性。Struts2是Apache软件基金会旗下的一个开源项目,它...
<constant name="struts.plugin.packages" value="org.apache.struts2.sitemesh"/> ``` 3. 配置Sitemesh的全局装饰器(可选): 在`web.xml`中添加以下配置: ```xml <filter-name>decorator <filter-class>...
### 关于Apache Struts 2软件存在高危漏洞的紧急通报003 #### 漏洞概述 根据温州市网络与信息安全信息通报中心发布的紧急通报(2017年第3期),Apache Struts 2软件中存在一个远程命令执行高危漏洞。此漏洞被正式...