`

Apache Struts2 文档之 JUnitPlugin

阅读更多
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.


  
  
0
1
分享到:
评论

相关推荐

    struts2-junit-plugin-2.1.8.1.jar

    `struts2-junit-plugin-2.1.8.1.jar` 是一个特定版本的Struts2 JUnit插件,它的版本号是2.1.8.1。这个插件允许开发者在JUnit测试环境中集成Struts2的应用,以便于进行功能测试和集成测试。通过这个插件,你可以直接...

    struts2-json-plugin-2.3.24-API文档-中文版.zip

    标签:apache、struts2、plugin、struts、json、jar包、java、API文档、中文版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,...

    struts2-junit-plugin-2.1.6.jar

    `license.txt`文件通常包含软件的许可协议信息,对于`struts2-junit-plugin-2.1.6.jar`来说,这意味着使用这个插件需要遵守其中指定的条款和条件,例如Apache License 2.0等常见的开源许可证。 总的来说,`struts2-...

    struts2-dojo-plugin-2.2.1.jar

    Struts2-dojo-plugin-2.2.1.jar 是一个针对Apache Struts2框架的扩展插件,主要用于增强Struts2应用的用户界面交互性,特别是通过集成Dojo JavaScript库来提供丰富的AJAX功能和用户体验。这个插件是Struts2与Dojo ...

    Practical Apache Struts2 Web 2.0 Projects

    struts 2的api查询文档, Ian Roughley 写的APress - Practical Apache Struts2 Web 2.0 Projects.2007.pdf 是外文的,正好可以锻炼下英文阅读

    struts2-json-plugin-2.3.8.jar

    Struts2 JSON Plugin是针对Apache Struts2框架的一个重要组件,版本为2.3.8。这个插件主要的功能是让Struts2应用程序能够轻松地处理JSON(JavaScript Object Notation)数据格式,使得Web应用可以方便地进行JSON序列...

    struts2-dojo-plugin-2.3.15.3.jar.zip

    Struts2 Dojo Plugin是Apache Struts框架的一个扩展,它为开发者提供了丰富的AJAX功能,以便在基于Struts2的应用程序中实现动态、交互式的用户界面。这个版本号"2.3.15.3"表明这是一个较旧的版本,但仍然在许多现有...

    Apache Struts 2 (struts-2.5.28.3-all.zip)

    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 所有依赖项(struts-2.5.28.3-lib.zip),Apache Struts 2.5.28.3是一个优雅的、可扩展的框架,用于创建企业级 Java Web 应用程序。它可以在完整发行版中使用,也可以作为单独的库、源代码、示例和...

    Practical Apache Struts 2 Web 2.0 Projects.pdf

    Apache Struts 2 是一个基于模型-视图-控制器(MVC)架构的开源Web应用程序框架,用于构建Java EE(Enterprise Edition)应用。这个框架旨在简化开发过程,并提供一种更结构化的方式来组织代码,提高可维护性和重用...

    Packtpub-Apache Struts 2 Web Application Development(2009).rar

    《Apache Struts 2 Web Application Development》是一本深入探讨如何使用Apache Struts 2框架进行Web应用程序开发的专业书籍。出版于2009年,它为开发者提供了丰富的知识和实践指导,帮助他们掌握这一强大的MVC...

    Apache+Struts2验证

    S2-053漏洞全称为"Struts2 REST Plugin远程代码执行",是Apache Struts2框架中的一个严重安全缺陷。该漏洞主要存在于Struts2的REST插件中,当用户提交特定格式的HTTP请求时,可能导致远程代码执行(RCE)。远程代码...

    Struts 2 远程代码执行漏洞(s2-045\s2-046)修复所用到的包

    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

    struts2-json-plugin-2.2.3.1能用的包

    SSH\\others\\struts2-spring-plugin-2.2.1.jar

    &lt;plugin class="org.apache.struts2.spring.plugin.SpringPlugin"&gt; &lt;param name="contextConfigLocation"&gt;classpath:spring/applicationContext.xml &lt;/plugin&gt; &lt;!-- ...其他配置... --&gt; &lt;/struts&gt; ``` 在...

    Apache Struts2是一个优雅的,可扩展的JAVA EE web框架

    Apache Struts2是一个高度灵活且功能丰富的JAVA EE(Java Platform, Enterprise Edition)Web应用程序框架,它的设计目标是为了简化开发过程并提高代码的可维护性。Struts2是Apache软件基金会旗下的一个开源项目,它...

    struts2-sitemesh-plugin-2.2.1.1.jarstruts2

    &lt;constant name="struts.plugin.packages" value="org.apache.struts2.sitemesh"/&gt; ``` 3. 配置Sitemesh的全局装饰器(可选): 在`web.xml`中添加以下配置: ```xml &lt;filter-name&gt;decorator &lt;filter-class&gt;...

    关于Apache Struts 2软件存在高危漏洞的紧急通报003

    ### 关于Apache Struts 2软件存在高危漏洞的紧急通报003 #### 漏洞概述 根据温州市网络与信息安全信息通报中心发布的紧急通报(2017年第3期),Apache Struts 2软件中存在一个远程命令执行高危漏洞。此漏洞被正式...

    Apache Struts 2.3.32 所有包

    修复Apache Struts2(S2-045)漏洞

Global site tag (gtag.js) - Google Analytics