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 用那种测试方法测试比较好?
分享到:
相关推荐
StrutsTestCase是一个专门为Struts应用程序设计的测试框架,它允许开发者对Action类进行单元测试,以确保业务逻辑的正确性。这个工程例子是基于StrutsTestCase的,它提供了实际操作和理解StrutsTestCase如何工作的...
StrutsTestCase是Apache Struts框架的一个扩展,它提供了一种集成测试工具,使得开发者能够方便地对基于Struts的应用程序进行单元...同时,了解并掌握StrutsTestCase也能让你在解决复杂的Struts问题时更加得心应手。
### Struts1与Struts2的主要区别 #### 概述 Apache Struts 是一个用于构建企业级Java Web应用的开源框架。它分为两个版本:Struts1 和 Struts2。虽然两者都基于模型-视图-控制器(MVC)设计模式,但它们之间存在...
Struts1和Struts2是两个著名的MVC框架,它们都是Apache软件基金会的Apache Struts项目的一部分,用于构建基于Java的Web应用程序。然而,两者在设计和实现上有显著的差异。 1. **架构模式的区别** - **Struts1.x** ...
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**中的Action依赖于Servlet API,这使得单元测试较为困难,通常需要借助于模拟框架如StrutsTestCase来进行测试。 **Struts2**中的Action则可以更容易地进行单元测试,因为它们不直接依赖于Servlet API,...
而Struts2为每个请求创建一个新的Action实例,避免了线程安全问题,同时也降低了内存和性能的影响。 在对Servlet容器的依赖上,Struts1的Action直接依赖于HttpServletRequest和HttpServletResponse,导致Action难以...
### Spring与Struts的整合:实现灵活的企业级应用开发 在企业级应用开发领域,Spring框架和Struts框架都是极具影响力的技术。Spring以其强大的依赖注入(DI)和面向切面编程(AOP)能力,提供了良好的环境管理和...
Struts1.x的测试通常依赖于对Servlet API的模拟,需要使用如StrutsTestCase等工具来搭建测试环境。相比之下,Struts2.x提供了更为灵活的测试机制,可以通过Mock对象轻松地进行单元测试,同时也支持集成测试,提高了...
在实际应用中,开发者可以利用Spring框架来管理Struts中的Action对象,这样就可以利用Spring的特性,如依赖注入等,来简化Action类的配置和使用。 #### 五、Struts国际化资源文件的使用步骤 1. **配置Struts支持**...
在Struts2中,测试是确保代码质量的重要环节,而`struts2-junit-plugin`则是Struts2框架的一个插件,专门用于集成JUnit进行单元测试。 JUnit是一款广泛使用的Java编程语言的单元测试框架。通过JUnit,开发者可以...
在Struts中,我们需要确保Action类能正确地接收来自Spring的依赖注入。这通常通过实现`SpringBeanAware`接口或者使用`@Autowired`注解来实现。 3. **请求调度问题**:Struts默认的请求调度器可能与Spring的...
StrutsTestCase提供了模拟Struts环境的功能,但这种方式仍然比较复杂。 **Struts2:** Struts2支持轻量级测试,通过Mock对象可以轻松地模拟出Action运行所需的环境。此外,Struts2还支持依赖注入,使得单元测试更加...
Struts2框架是一款广泛应用于Java Web开发中的开源MVC框架,它简化了Web应用程序的构建,使得业务逻辑、控制逻辑和视图层得以分离。单元测试对于任何软件项目都至关重要,因为它能确保代码的正确性,提高代码质量...
### Struts2与Struts1的对比 ...Struts2不仅提高了灵活性和可扩展性,还解决了许多Struts1中存在的问题,如线程安全性和复杂的配置过程等。这些改进使得Struts2成为了一个更为现代化、易于使用的Web应用开发框架。
在单元测试中,Struts2提供了一个名为`StrutsTestCase`的基类,允许开发者直接通过URL获取`ActionProxy`。这样,我们就可以设置测试环境,然后调用`ActionProxy.execute()`方法来模拟请求处理过程。在这个过程中,...
10. **测试与调试**:Struts 2提供了测试工具和API,如StrutsTestCase,便于开发者进行单元测试和集成测试。同时,其丰富的日志记录功能也有助于调试和诊断问题。 总之,Struts 2.5.12是一个功能强大且成熟的Web...