记得刚学struts2时就了解了点struts2 的 action的测试方法,但是一直都没针对Action写过测试,最近稍微研究了下struts2 的 action测试,遇到了很多问题:
struts 2.0 之前
import static org.junit.Assert.*;
import java.util.HashMap;
import java.util.Map;
import org.apache.struts2.StrutsTestCase;
import org.junit.Test;
import com.jack.lucene.service.LuceneSearchService;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionProxy;
import com.opensymphony.xwork2.DefaultActionProxyFactory;
import com.opensymphony.xwork2.config.Configuration;
import com.opensymphony.xwork2.config.ConfigurationManager;
import com.opensymphony.xwork2.inject.Container;
/**
* @author jack
*
*/
public class LuceneSearchHandlerTest extends StrutsTestCase {
/**
* Test method for {@link com.jack.lucene.handler.LuceneSearch#execute()}.
* @throws Exception
*/
@Test
public void testExecute() throws Exception {
Map paramMap = new HashMap();
paramMap.put("keyWord", "grails 参考");
Map context = new HashMap();
context.put(ActionContext.PARAMETERS, paramMap);
ConfigurationManager cm = new ConfigurationManager();
Configuration conf = cm.getConfiguration();
Container containter = conf.getContainer();
DefaultActionProxyFactory actionProxyFactory = new DefaultActionProxyFactory();
actionProxyFactory.setContainer(containter);
ActionProxy proxy = actionProxyFactory.createActionProxy("/lucene","luceneSearch", context);
LuceneSearch lsh = (LuceneSearch) proxy.getAction();
lsh.setLuceneSearchService(new LuceneSearchService());
String result = lsh.execute();
assertEquals("success", result);
}
}
但是如果你的项目是Spring管理的那么执行测试会报错:
要想测试只能暂时不用Spring去管理。或者用其他方法
SEVERE: [26:24.218] ********** 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>
struts2.1 之后 请看这几篇文章
http://kang36897.blog.163.com/blog/static/170473732010710101238126/
http://jzbgjsy.iteye.com/blog/736162
http://www.iteye.com/topic/572614
http://friping.iteye.com/blog/487673
分享到:
相关推荐
然后,你可以创建JUnit测试类,使用`@StrutsTest`注解标记测试类,以指示该类属于Struts2测试。在测试方法上使用`@Test`注解,并可以使用`@Action(value = "your-action-name")`来指定要测试的Struts2 Action。 ...
在Struts2SpringUnitDemo中,可能使用了JUnit来测试Action和Service类,确保它们的功能正确无误。 4. **Action和Service的测试**:在Struts2中,Action类是处理用户请求的实体,它通常调用Service层来执行业务逻辑...
它扩展了JUnit,使得Struts2的控制器可以在单元测试环境中运行,从而能够更好地测试Action和整个MVC流程。这个插件在2.1.8版本中也包含了对Struts2核心库的依赖,确保了测试的兼容性。 最后,`json-lib-2.1.jar`是...
`struts2-junit-plugin-2.1.6.jar`这个插件使得我们能够在JUnit环境中对Struts2的应用进行测试,包括Action类的测试。 Action类是Struts2的核心组件,它处理用户的请求并负责业务逻辑的执行。测试Action类对于验证...
struts2-junit-plugin-2.2.1.1.jar
3. `struts2-junit-plugin`:Struts2提供了JUnit插件,可以简化Struts2应用的测试,允许直接调用Action方法进行测试。 4. 测试Action类:通过模拟Service层的依赖,直接测试Action类的execute()方法,确保业务逻辑...
struts2-junit-plugin-2.1.8.jar 是 Struts2 提供的测试插件,可以用来测试 Struts2.x 中的 Action。 下面是一个基本的测试代码: ```java public class MessageActionTest extends StrutsSpringTestCase { @...
导入必要的测试库,如JUnit、Struts2测试相关的类。 2. **注解测试类**:使用`@Before`和`@After`注解定义测试前后的准备和清理工作,如初始化Struts2上下文,配置Action和ActionMapping。 3. **定义测试方法**:...
【标题】"Junit测试Action"涉及的是在Java开发中使用JUnit进行Action类的单元测试。JUnit是一款广泛使用的Java编程语言的单元测试框架,它使得开发者能够方便地编写和执行测试用例,确保代码的质量和功能的正确性。 ...
在使用Struts2单元测试jar包时,开发者可以利用JUnit等测试框架,结合Mockito、PowerMock等工具来编写测试用例。测试用例应覆盖所有可能的输入和异常情况,以确保代码的健壮性。此外,使用持续集成工具(如Jenkins或...
标题提到的“struts2测试工具”可能是指用于测试Struts2应用程序的工具或框架。在Java Web开发中,测试是确保代码质量、性能和安全性的关键步骤。Struts2的应用通常需要进行单元测试、集成测试和功能测试。以下是...
2. **Interceptor测试**:Interceptor是Struts2的核心特性,它们在Action调用前后执行,提供如登录验证、日志记录等功能。测试Interceptor需要确保它们在正确的时间点介入,并按照预期处理请求。 3. **Result类型...
通过上述分析,我们可以看出,"moke测试struts的action"涉及的是使用Struts框架构建Web应用时,对Action组件的测试和验证,包括了Action的配置、实现、结果处理以及可能的测试用例设计和执行。在实际项目中,这样的...
在Struts2中,可以使用JUnit进行Action的单元测试。测试主要关注以下几个方面: 1. **Action的执行逻辑**:测试Action的`execute`方法是否能正确地返回期望的结果代码(如SUCCESS或ERROR)。 2. **模型验证**:如果...
在Struts框架中,ActionForm负责处理用户请求,Action类执行业务逻辑,而JSP作为视图展示结果。使用struts2-core、struts2-convention等jar包,可以构建结构良好的Web应用,提高代码复用性。 3. MySQL:MySQL是一个...
在前端,可以通过JavaScript或者jQuery等库,使用AJAX请求Struts2的JSON Action,并处理返回的JSON数据。例如,使用jQuery的`$.ajax()`方法: ```javascript $.ajax({ url: 'myAction.json', type: 'POST', ...
struts2-junit-plugin.jar则帮助进行单元测试。这些插件根据实际需求选择引入。 6. **其他依赖的jar包**:Struts2运行还需要一些其他的库,如freemarker或velocity用于模板引擎,javassist用于动态类生成,log4j或...
Struts2的核心是Action类,它是业务逻辑的载体,通过配置文件或注解来指定Action与URL的映射关系。 **Hibernate** 是一款优秀的对象关系映射(ORM)框架,它简化了Java应用与数据库之间的交互。Hibernate通过XML...
通过JUnit,开发者可以方便地编写针对Struts2 Action和Spring Service层的单元测试,从而确保代码的质量。 #### Maven2.2.1 Maven是一个项目管理和理解工具,它提供了一套标准的构建生命周期,能够自动化构建过程中...
在IT行业中,JUnit和Struts2.0是两个非常重要的框架,它们分别专注于单元测试和Web应用程序开发。这里,我们将深入探讨这两个技术以及如何在实际项目中应用它们,并结合资源见解来提升开发效率。 首先,JUnit是Java...