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

Struts2.0中关于StrutsTestCase 的问题 是否是bug?

阅读更多
   Struts2.0中有个单元测试的基础类StrutsTestCase 当系统中加入 struts2-spring-plugin-2.0.11.jar的包后, 所有StrutsTestCase 的子类就执行不正常.

例如: Struts2.0中的blank例子 中的 ConfigTest类 代码如下:
package example;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.config.RuntimeConfiguration;
import com.opensymphony.xwork2.config.entities.ActionConfig;
import com.opensymphony.xwork2.config.entities.ResultConfig;
import com.opensymphony.xwork2.config.providers.XmlConfigurationProvider;

import java.util.Map;
import java.util.List;

import org.apache.struts2.StrutsTestCase;

public class ConfigTest extends StrutsTestCase {

    protected void setUp() throws Exception {
        super.setUp();
        XmlConfigurationProvider c = new XmlConfigurationProvider("struts.xml");
        configurationManager.addConfigurationProvider(c);
        configurationManager.reload();
    }
	
    protected void assertSuccess(String result) throws Exception {
        assertTrue("Expected a success result!",
                ActionSupport.SUCCESS.equals(result));
    }

    protected void assertInput(String result) throws Exception {
        assertTrue("Expected an input result!",
                ActionSupport.INPUT.equals(result));
    }

    protected Map assertFieldErrors(ActionSupport action) throws Exception {
        assertTrue(action.hasFieldErrors());
        return action.getFieldErrors();
    }

    protected void assertFieldError(Map field_errors, String field_name, String error_message) {

        List errors = (List) field_errors.get(field_name);
        assertNotNull("Expected errors for " + field_name, errors);
        assertTrue("Expected errors for " + field_name, errors.size()>0);
        // TODO: Should be a loop
        assertEquals(error_message,errors.get(0));

    }



    protected ActionConfig assertClass(String namespace, String action_name, String class_name) {
        RuntimeConfiguration configuration = configurationManager.getConfiguration().getRuntimeConfiguration();
        ActionConfig config = configuration.getActionConfig(namespace, action_name);
        assertNotNull("Mssing action", config);
        assertTrue("Wrong class name: [" + config.getClassName() + "]",
                class_name.equals(config.getClassName()));
        return config;
    }

    protected ActionConfig assertClass(String action_name, String class_name) {
        return assertClass("", action_name, class_name);
    }

    protected void assertResult(ActionConfig config, String result_name, String result_value) {
        Map results = config.getResults();
        ResultConfig result = (ResultConfig) results.get(result_name);
        Map params = result.getParams();
        String value = (String) params.get("actionName");
        if (value == null)
            value = (String) params.get("location");
        assertTrue("Wrong result value: [" + value + "]",
                result_value.equals(value));
    }

    public void testConfig() throws Exception {
        assertNotNull(configurationManager);
    }
}


当系统中包含struts2-spring-plugin-2.0.11.jar 后报
严重: ********** FATAL ERROR STARTING UP STRUTS-SPRING INTEGRATION **********
Looks like the Spring listener was not configured for your web app! 
Nothing will work until WebApplicationContextUtils returns a valid ApplicationContext.
You might need to add the following to web.xml: 
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>


尝试着修复这个问题 没能成功; 

这是个bug么?  怎么做才能正常?   有人遇到和我一样的问题么?

Strut2.0 + Spring + hibernate   用那种测试方法测试比较好?
分享到:
评论
2 楼 loveyeah 2008-11-19  
http://www.iteye.com/topic/194793

这上面能够解决你这个问题,但是ssh整合怎么测试,就没有回答了
1 楼 wsligao 2008-07-23  
SSH框架没有整合好 在web.xml中加入提示的代码

相关推荐

    StrutsTestCase工程例子

    StrutsTestCase是一个专门为Struts应用程序设计的测试框架,它允许开发者对Action类进行单元测试,以确保业务逻辑的正确性。这个工程例子是基于StrutsTestCase的,它提供了实际操作和理解StrutsTestCase如何工作的...

    StrutsTestCase-2.1.4(含文档、源码、官方示例).rar

    StrutsTestCase是Apache Struts框架的一个扩展,它提供了一种集成测试工具,使得开发者能够方便地对基于Struts的应用程序进行单元...同时,了解并掌握StrutsTestCase也能让你在解决复杂的Struts问题时更加得心应手。

    struts1和struts2的区别

    ### Struts1与Struts2的主要区别 #### 概述 Apache Struts 是一个用于构建企业级Java Web应用的开源框架。它分为两个版本:Struts1 和 Struts2。虽然两者都基于模型-视图-控制器(MVC)设计模式,但它们之间存在...

    struts1&struts2

    Struts1和Struts2是两个著名的MVC框架,它们都是Apache软件基金会的Apache Struts项目的一部分,用于构建基于Java的Web应用程序。然而,两者在设计和实现上有显著的差异。 1. **架构模式的区别** - **Struts1.x** ...

    strutsTestCase所需要用到的jar

    strutsTestCase所需要用到的jar org.springframework.core-3.1.2.RELEASE.jar spring-test.jar struts2-junit-plugin-2.3.16.3.jar xmlbeans-2.3.0.jar xmlpull-1.1.3.1.jar xstream-1.4.2.jar xwork-core-2.3.16.3....

    struts1.0与struts2.的区别

    **Struts1**中的Action依赖于Servlet API,这使得单元测试较为困难,通常需要借助于模拟框架如StrutsTestCase来进行测试。 **Struts2**中的Action则可以更容易地进行单元测试,因为它们不直接依赖于Servlet API,...

    Struts1和Struts2的区别和对比

    而Struts2为每个请求创建一个新的Action实例,避免了线程安全问题,同时也降低了内存和性能的影响。 在对Servlet容器的依赖上,Struts1的Action直接依赖于HttpServletRequest和HttpServletResponse,导致Action难以...

    Spring整合Struts

    ### Spring与Struts的整合:实现灵活的企业级应用开发 在企业级应用开发领域,Spring框架和Struts框架都是极具影响力的技术。Spring以其强大的依赖注入(DI)和面向切面编程(AOP)能力,提供了良好的环境管理和...

    struts1.x和struts2.x区别

    Struts1.x的测试通常依赖于对Servlet API的模拟,需要使用如StrutsTestCase等工具来搭建测试环境。相比之下,Struts2.x提供了更为灵活的测试机制,可以通过Mock对象轻松地进行单元测试,同时也支持集成测试,提高了...

    SSH框架面试题

    在实际应用中,开发者可以利用Spring框架来管理Struts中的Action对象,这样就可以利用Spring的特性,如依赖注入等,来简化Action类的配置和使用。 #### 五、Struts国际化资源文件的使用步骤 1. **配置Struts支持**...

    struts2-junit-plugin-2.1.6.jar

    在Struts2中,测试是确保代码质量的重要环节,而`struts2-junit-plugin`则是Struts2框架的一个插件,专门用于集成JUnit进行单元测试。 JUnit是一款广泛使用的Java编程语言的单元测试框架。通过JUnit,开发者可以...

    Spring与Struts结合测试的问题解答

    在Struts中,我们需要确保Action类能正确地接收来自Spring的依赖注入。这通常通过实现`SpringBeanAware`接口或者使用`@Autowired`注解来实现。 3. **请求调度问题**:Struts默认的请求调度器可能与Spring的...

    Struts2和Struts1的不同

    StrutsTestCase提供了模拟Struts环境的功能,但这种方式仍然比较复杂。 **Struts2:** Struts2支持轻量级测试,通过Mock对象可以轻松地模拟出Action运行所需的环境。此外,Struts2还支持依赖注入,使得单元测试更加...

    Struts2框架单元测试代码

    Struts2框架是一款广泛应用于Java Web开发中的开源MVC框架,它简化了Web应用程序的构建,使得业务逻辑、控制逻辑和视图层得以分离。单元测试对于任何软件项目都至关重要,因为它能确保代码的正确性,提高代码质量...

    Struts2与Struts1的对比

    ### Struts2与Struts1的对比 ...Struts2不仅提高了灵活性和可扩展性,还解决了许多Struts1中存在的问题,如线程安全性和复杂的配置过程等。这些改进使得Struts2成为了一个更为现代化、易于使用的Web应用开发框架。

    Struts2运行流程测试

    在单元测试中,Struts2提供了一个名为`StrutsTestCase`的基类,允许开发者直接通过URL获取`ActionProxy`。这样,我们就可以设置测试环境,然后调用`ActionProxy.execute()`方法来模拟请求处理过程。在这个过程中,...

    struts-2.5.12

    10. **测试与调试**:Struts 2提供了测试工具和API,如StrutsTestCase,便于开发者进行单元测试和集成测试。同时,其丰富的日志记录功能也有助于调试和诊断问题。 总之,Struts 2.5.12是一个功能强大且成熟的Web...

Global site tag (gtag.js) - Google Analytics