`
bruce0508
  • 浏览: 19657 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

struts2在耦合servlet api下测试Action的异常问题

    博客分类:
  • java
阅读更多
环境:spring+struts2,使用了spring-struts2-plugin进行集成,正常启动服务器是ok的。但是我在做单元测试时发现了问。
我的struts2 Action中必须直接使用servlet request。代码如下:
String url =  "http://localhost:8080/dealer/list";
String classes = new HttpUtil(ServletActionContext.getRequest().post(url));


JUnit代码如下:
InvList action = new InvListAction();
assertEquals(ActionSupport.SUCCESS,action.execute());

问题出在这:我刚开始直接让testCase集成jnit的TestCase,debug时在Action类的new HttpUtil直接抛出了nullPoiter异常。想了想原因应该是测试类无法取得request对象。
后来用了struts2-junit-plugin,让testCase继承了StrutsTestCase。其他代码全部不变。这次debug时抛出了异常:
nothing will work until WebApplicationContextUtil returns a valid ApplicationContext.
you may need to add the following to web.xml:
<listen>
   <listened-class>org.springframework.web.context.ContextLoaderListened</listened-class>
</listener>

很奇怪,这个listener我是加在web.xml的,而且正常启动服务器都可以访问spring的bean的,证明配置是ok的。
有谁有使用过StrutsTestCase这个类测试request response的经验的请指教!
1
0
分享到:
评论
2 楼 bruce0508 2011-09-30  
这个问题没有解决
1 楼 jsnet2006 2011-03-15  
楼上的问题解决没有,我也遇到了这个问题。

相关推荐

    struts2的API耦合与动态方法调用

    这样,无需在Action类中直接引用ServletAPI,降低了耦合度,提高了代码的可测试性。 接下来,我们探讨Struts2的动态方法调用(Dynamic Method Invoked,DMI): 动态方法调用是Struts2的一种强大功能,它允许根据...

    Struts2中直接和间接访问ServletAPI以及动态方法调用之感叹号

    然而,在Struts2中,我们通常不直接与Servlet API交互,而是通过Action类和Struts拦截器来处理请求。直接访问Servlet API可能涉及使用`HttpServletRequest`、`HttpServletResponse`和`ServletConfig`等对象,这可能...

    详解Struts2中Action访问Servlet API的几种方法

    Struts2的Action并未直接与任何Servlet API耦合,这是Struts2的一个改良之处,因为Action类不再与Servlet API耦合,能更轻松的测试该Action。但如何访问?  Web应用中通常需要访问的Servlet API就是...

    strut2 servletapi

    在Struts2框架中,通常我们不会直接使用Servlet API,因为Struts2已经为我们提供了更高级别的抽象和拦截器机制来处理请求和响应。然而,有时在特定情况下,比如需要直接操作HTTP请求对象或响应对象时,开发者可能...

    struts2笔记

    在Struts2中,Action类不再直接依赖于Servlet API,而是通过注解或配置文件定义其行为。ActionForm的概念被ActionSupport类取代,提供了一套更完善的验证机制。此外,Struts2还引入了Tiles框架,用于布局和组合视图...

    Struts1和Struts2的区别和对比

    Struts1的Action由于与Servlet API紧密耦合,测试较为复杂,需要依赖如Struts TestCase这样的第三方工具。Struts2 Action则可以通过依赖注入和模拟对象进行测试,使其更易于测试。 在捕获用户输入方面,Struts1使用...

    Struts2+hibernate+spring的常见面试题

    2. Servlet API耦合度:Struts1直接耦合Servlet API,而Struts2与Servlet API松耦合,降低了直接操作Request和Response对象的复杂性。 3. 请求参数映射:Struts1需要ActionForm持有请求参数,Struts2则自动将请求...

    Struts2和Struts1的区别,详细点,主要说说Struts2

    - **Struts2**的Action类并不直接依赖Servlet API,而是通过中间层(如拦截器)间接与Servlet API交互,这样的设计使得**Struts2**的Action更加独立,也更容易进行单元测试。 #### 请求处理流程 - **Struts1**执行...

    Struts中文api

    Struts是Apache软件基金会下的一个开源项目,它是一款基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架。Struts1.x版本在Web开发领域有着广泛的应用,为开发者提供了强大的控制层支持。本资源是...

    Struts2的由来

    然而,随着时间的推移,Struts 1暴露了一些问题,如对表现层技术的支持单一、与Servlet API的深度耦合和侵入式设计等,这限制了它的灵活性和可测试性。 WebWork是一个由社区驱动的框架,它针对Struts 1的不足进行了...

    struts1和struts2区别

    - **Struts1**:由于Action与Servlet API紧密耦合,测试较为困难,需要使用如Struts TestCase的第三方工具。 - **Struts2**:Action可以通过依赖注入进行测试,使得测试更加容易和独立。 5. **输入捕获**: - **...

    Struts1与Struts2原理 区别详解汇总

    2. **Action**:在Struts2中,Action不再直接与Servlet API耦合,而是通过拦截器(Interceptors)进行处理。Action本身主要负责业务逻辑处理。 3. **拦截器(Interceptors)**:一系列负责处理请求的组件,包括但不...

    Struts1与Struts2本质区别

    - **Struts 2**:通过松耦合的设计,Action不再直接依赖于Servlet API。这不仅简化了Action的编写,也使得Action可以在没有Web容器的情况下独立测试,提高了测试效率和便利性。 #### 4. 可测性方面的对比 - **...

    struts1.0与struts2.的区别

    **Struts2**中的Action则通过依赖注入的方式与Servlet API进行交互,这意味着Action无需直接处理HttpServletRequest和HttpServletResponse对象,而是通过Struts2框架提供的服务间接访问这些对象,大大降低了耦合度。...

    struts2速成

    此外,Struts2的Action不依赖Servlet API,增强了测试友好性,可以通过依赖注入进行单元测试。 在处理用户输入方面,Struts1使用ActionForm对象来捕获输入,而Struts2直接将Action属性作为输入属性,简化了数据绑定...

    struts2入门教程(PPT)

    首先,Struts2采用了无侵入式设计,这意味着它没有像Struts1那样紧密地耦合于Servlet API和Struts API。开发者可以在不依赖这些API的情况下编写应用,降低了框架对代码的影响,提高了代码的可维护性和可测试性。例如...

    struts1和struts2的对比

    - Struts1的Action直接与Servlet API交互,即Action方法会直接接收HttpServletRequest和HttpServletResponse参数。 - 这种方式使得Action类与Web容器紧密耦合,降低了可移植性和可测试性。 - **Struts2与Servlet ...

Global site tag (gtag.js) - Google Analytics