最近做个项目,由于没有美工,所以页面的工作进展迟缓,所以想脱离页面的束缚来开发Action级别的应用。于是在网上苦苦寻找解决方案,终于找到了JUnit做单元测试的方法,具体搭建方法参见
http://wenku.baidu.com/view/d5cb52c30c22590102029dc9.html用这种方法搭建有一个问题,就是它不会返给你,Action所要返回的具体值,而是Response出来的东西。所以,感觉有点不合我的要求,于是继续寻找,功夫不负有心人,我找到了下一种方法
http://kang36897.blog.163.com/blog/static/170473732010710101238126/。只是这种方法还是有个问题。就是我的Acion是这样写的。
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.SessionAware;
import cn.com.pzhsteel.pojo.JUser;
import cn.com.pzhsteel.service.UserService;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport implements SessionAware
{
/**
*
*/
private static final long serialVersionUID = 1L;
private JUser user;
private UserService myService;
private Map<String, Object> session;
public String checkUser() throws Exception
{
HttpServletRequest request = ServletActionContext.getRequest();
String flag=request.getParameter("user.name");
if(myService == null)
return "error";
else
{
if(user == null)
{
user = new JUser();
user.setName("test");
user.setPassword("12345");
}
if(myService.isUser(user))
{
session.put(user.getName(), user);
return "success";
}
else
return "unsuccess";
}
}
public JUser getUser()
{
return user;
}
public void setUser(JUser user)
{
this.user = user;
}
public void setMyService(UserService myService)
{
this.myService = myService;
}
public void setSession(Map<String, Object> session)
{
this.session = session;
}
}
在执行
public void setSession(Map<String, Object> session)
{
this.session = session;
}
方法时会发现,session是空的,null所以测试一直报失败。之后的时间里,经过不停的调试和修改,终于找到解决办法了。很简单就是在test方法上把session加上去。代码如下:
package test.com.pzhsteel.action;
import java.util.HashMap;
import java.util.UUID;
import javax.servlet.http.HttpSession;
import org.apache.struts2.StrutsSpringTestCase;
import org.junit.Assert;
import org.junit.Test;
import org.springframework.mock.web.MockHttpSession;
import cn.com.pzhsteel.pojo.JUser;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionProxy;
public class UserTest extends StrutsSpringTestCase
{
@Override
protected void setUp() throws Exception
{
super.setUp();
}
@Test
public void testLogin() throws Exception
{
HashMap<String, Object> session = new HashMap<String, Object>();
request.setParameter("user.name", "test");
request.setParameter("user.password", "12345");
request.setSession(getNewSession());
ActionProxy proxy = getActionProxy("/userAction.action");
Assert.assertNotNull(proxy);
proxy.getInvocation().getInvocationContext().setSession(session);
String result = proxy.execute();
Assert.assertNotNull(result);
Assert.assertEquals(Action.SUCCESS, result);
}
private HttpSession getNewSession()
{
HttpSession session = new MockHttpSession();
String sessionId = UUID.randomUUID().toString();
session.setAttribute("USER_SESSION",sessionId);
return session;
}
private JUser getUser(String userName,String userPassWord,String userSysId)
{
JUser user = new JUser();
user.setName(userName);
user.setPassword(userPassWord);
user.setSysId(userSysId);
return user;
}
@Override
protected String[] getContextLocations()
{
return (new String[] {
"classpath*:WEB-INF/applicationContext.xml"
});
}
}
这样问题就会解决了!哈哈可以开开心心的TDD开发了。期待呀。。。。。
分享到:
相关推荐
SSH(Struts + Spring + Hibernate)和SSI(Spring Security + Spring + Hibernate)是两种常见的Java Web开发框架,它们被广泛用于构建高效、可维护的Web应用程序。这些框架结合了各自的优点,提供了强大的功能和...
SSH 框架与 SSI 框架的区别-配置说明 SSH 框架与 SSI 框架是两种常见的 Web 应用程序框架,它们之间有着很大的区别,本文将通过配置说明来详细阐述这两个框架的差异。 首先,让我们来看一下 SSH 框架的配置文件。...
2. **配置SSH**:设置SSH配置文件(如`/etc/ssh/sshd_config`),包括端口号、认证方式等。 3. **密钥对生成**:为提升安全性,建议使用密钥对认证,生成公钥和私钥。 4. **权限设置**:确保SSH目录和文件权限安全,...
SSH(Spring、Struts、Hibernate)和SSI(Spring Security、Spring MVC、Spring Integration)是两种常见的Java Web开发框架组合。它们为开发者提供了强大的工具集,帮助构建高效、可维护和可扩展的企业级应用程序。...
《HENGSTLER标准绝对值型编码器AC58 -BiSS/SSI详解》 HENGSTLER的AC58系列编码器是一款专为工业应用设计的高精度测量设备,适用于各种精密控制系统,如计数器、指示器、继电器、打印机以及切纸机等。该编码器具备...
### SSH和SSI等框架常用基础配置web.xml 在Java Web应用开发中,`web.xml`是部署描述符的核心部分,用于定义与Web应用程序相关的配置信息。对于使用SSH(Struts + Spring + Hibernate)和SSI(Struts + Spring + ...
里面包含2个简单的web项目,一个是 Spring + SpringMVC+Mybatis,一个是Spring+struts2+Hibernate,使用了mysql数据库,里面包含数据库字段,环境搭建好可以直接运行
在Java开发中,SSH、SSI、EJB以及Hibernate是几个重要的框架和技术,它们极大地提高了开发效率和代码质量。下面将详细解析这些框架的核心概念、作用以及如何整合使用。 1. **Struts1 & Struts2 (SSH)** Struts是...
一件生成SSH/SSI另外支持gwt配置,完全支持eclipse,Myeclipse
SSI BISS EnDat编码器通信协议是工业自动化领域中用于编码器数据传输的重要技术,尤其在高精度运动控制和伺服系统中广泛应用。首先,我们来深入理解SSI(同步串行接口)通信协议。 SSI通信协议是一种同步串行数据...
自动生成java框架 SSH/SSI 框架并生成配置文件和dwr和代码.是代码练习和熟悉框架的好帮手.
ssi上载器 一个很棒的jquery上传器。 文档和示例: ####安装: 用安装 npm install ssi-uploader 安装 bower install ssi-uploader 或只是下载并包含文件。 < link rel =" stylesheet " href =" dist/...
苦恼直接使用此包可以进行ssh ssi ssj 使用jpa开发时支持给中ROM,版本:struts2.1.8+spring2.5.6+ibatis2.3+hibernate3.3.2+structjson+dwr不多说了 分两部分,因为每次不超过 15M, 这些包一共 18M多 第二部分 ...
SSH和SSI是两种常见的Java企业级开发框架,用于构建高效、可扩展的Web应用程序。SSH分别代表Struts、Spring和Hibernate,而SSI则通常指Spring和iBatis。这篇文章将详细解析这两个集成过程以及相关缓存技术。 首先,...
基于SSI的框架整合开发Demo。该Demo是一个完整的MyEclipse项目,可以直接导入运行。注意:该demo连接oracle数据库,所以需要相应用户及权限。如有必要可以直接修改%项目%/src/jdbc.properties。版本说明:Struts2.1-...
SSM、SSI和SSH是Java Web开发中常用的三个框架组合,它们分别是Spring、SpringMVC和MyBatis的缩写。这些框架的整合为开发者提供了高效、灵活且强大的后端开发环境。 首先,Spring框架是Java企业级应用的核心,它...
例如,可以创建一个`IndexController`,返回一个视图名`ssi/index`。 - 视图解析器(如Thymeleaf或Freemarker)通常会寻找与视图名同名的模板文件,但我们需要让Spring跳过这个过程,直接返回静态的SSI文件。这可以...
在IT行业中,SSI(Struts2、Spring、iBatis)整合开发是一种常见的Web应用程序架构模式,它将三个强大的框架结合在一起,以实现高效的MVC(Model-View-Controller)设计模式。本教程将以"ssi整合开发包括分页"为例,...
EXT-SSI集成开发是一种在Web应用中结合EXT.js与Server-Side Includes(SSI)技术的后端框架设计。EXT.js是一个强大的JavaScript库,主要用于构建富客户端的用户界面,而SSI则是一种服务器端脚本语言,它允许在HTML...
本资源基本包含了Eclipse IDE工具下对...其兼容性本人已完全测试通过,能支持WEB开发的绝大部分应用(SSI)。别看资源分相对其他资源有较高,但是绝对比你一个一个单独下划算、省时、易用,为新手节省了不少开发成本。