`
techno_it
  • 浏览: 54745 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SSH/SSI的TDD开发之实践

    博客分类:
  • Web
阅读更多
最近做个项目,由于没有美工,所以页面的工作进展迟缓,所以想脱离页面的束缚来开发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开发了。期待呀。。。。。
分享到:
评论
4 楼 roy_ 2013-02-18  
真心感谢,Junit下HttpSession不能注入的问题困扰我几小时了
3 楼 wkywahaha 2012-03-12  
嗯 谢谢啊  我先看看视频了解下Struts2和Spring  然后再求指导~~~~~
2 楼 techno_it 2012-03-10  
wkywahaha 写道
实习生要用SSI做个订餐系统,表示压力很大啊~~~~ 求各种指导
我相信我也会有羽翼丰满的一天的~~~
要指导什么呀?。。。。
1 楼 wkywahaha 2012-03-09  
实习生要用SSI做个订餐系统,表示压力很大啊~~~~ 求各种指导
我相信我也会有羽翼丰满的一天的~~~

相关推荐

    SSH/SSI框架

    SSH(Struts + Spring + Hibernate)和SSI(Spring Security + Spring + Hibernate)是两种常见的Java Web开发框架,它们被广泛用于构建高效、可维护的Web应用程序。这些框架结合了各自的优点,提供了强大的功能和...

    SSH框架与SSI框架的区别-配置说明

    SSH 框架与 SSI 框架的区别-配置说明 SSH 框架与 SSI 框架是两种常见的 Web 应用程序框架,它们之间有着很大的区别,本文将通过配置说明来详细阐述这两个框架的差异。 首先,让我们来看一下 SSH 框架的配置文件。...

    自己总结的ssh,ssi项目部署文档和实例文档

    2. **配置SSH**:设置SSH配置文件(如`/etc/ssh/sshd_config`),包括端口号、认证方式等。 3. **密钥对生成**:为提升安全性,建议使用密钥对认证,生成公钥和私钥。 4. **权限设置**:确保SSH目录和文件权限安全,...

    SSI+SSH框架

    SSH(Spring、Struts、Hibernate)和SSI(Spring Security、Spring MVC、Spring Integration)是两种常见的Java Web开发框架组合。它们为开发者提供了强大的工具集,帮助构建高效、可维护和可扩展的企业级应用程序。...

    HENGSTLER 标准绝对值型编码器 AC58 -BiSS/SSI

    《HENGSTLER标准绝对值型编码器AC58 -BiSS/SSI详解》 HENGSTLER的AC58系列编码器是一款专为工业应用设计的高精度测量设备,适用于各种精密控制系统,如计数器、指示器、继电器、打印机以及切纸机等。该编码器具备...

    SSH和SSI等框架常用基础配置web.xml

    ### SSH和SSI等框架常用基础配置web.xml 在Java Web应用开发中,`web.xml`是部署描述符的核心部分,用于定义与Web应用程序相关的配置信息。对于使用SSH(Struts + Spring + Hibernate)和SSI(Struts + Spring + ...

    SSH框架集成和SSI框架集成

    里面包含2个简单的web项目,一个是 Spring + SpringMVC+Mybatis,一个是Spring+struts2+Hibernate,使用了mysql数据库,里面包含数据库字段,环境搭建好可以直接运行

    ssh,ssi等框架,ejb,hibernate等各种程序所需的Jar包

    在Java开发中,SSH、SSI、EJB以及Hibernate是几个重要的框架和技术,它们极大地提高了开发效率和代码质量。下面将详细解析这些框架的核心概念、作用以及如何整合使用。 1. **Struts1 & Struts2 (SSH)** Struts是...

    eclipse/Myeclipse插件一键生成

    一件生成SSH/SSI另外支持gwt配置,完全支持eclipse,Myeclipse

    SSI BISS EnDat编码器通信协议

    SSI BISS EnDat编码器通信协议是工业自动化领域中用于编码器数据传输的重要技术,尤其在高精度运动控制和伺服系统中广泛应用。首先,我们来深入理解SSI(同步串行接口)通信协议。 SSI通信协议是一种同步串行数据...

    eclipse/Myeclipse java框架生成器

    自动生成java框架 SSH/SSI 框架并生成配置文件和dwr和代码.是代码练习和熟悉框架的好帮手.

    ssi-uploader:一个很棒的jQuery上传器

    ssi上载器 一个很棒的jquery上传器。 文档和示例: ####安装: 用安装 npm install ssi-uploader 安装 bower install ssi-uploader 或只是下载并包含文件。 &lt; link rel =" stylesheet " href =" dist/...

    ssh+ssj+ssi jar包第一部分

    苦恼直接使用此包可以进行ssh ssi ssj 使用jpa开发时支持给中ROM,版本:struts2.1.8+spring2.5.6+ibatis2.3+hibernate3.3.2+structjson+dwr不多说了 分两部分,因为每次不超过 15M, 这些包一共 18M多 第二部分 ...

    【个人经验】SSH集成步骤 SSI集成步骤

    SSH和SSI是两种常见的Java企业级开发框架,用于构建高效、可扩展的Web应用程序。SSH分别代表Struts、Spring和Hibernate,而SSI则通常指Spring和iBatis。这篇文章将详细解析这两个集成过程以及相关缓存技术。 首先,...

    SSI框架整合开发

    基于SSI的框架整合开发Demo。该Demo是一个完整的MyEclipse项目,可以直接导入运行。注意:该demo连接oracle数据库,所以需要相应用户及权限。如有必要可以直接修改%项目%/src/jdbc.properties。版本说明:Struts2.1-...

    ssm,ssi,ssh 搭建好的空项目

    SSM、SSI和SSH是Java Web开发中常用的三个框架组合,它们分别是Spring、SpringMVC和MyBatis的缩写。这些框架的整合为开发者提供了高效、灵活且强大的后端开发环境。 首先,Spring框架是Java企业级应用的核心,它...

    ssi整合完整例子

    例如,可以创建一个`IndexController`,返回一个视图名`ssi/index`。 - 视图解析器(如Thymeleaf或Freemarker)通常会寻找与视图名同名的模板文件,但我们需要让Spring跳过这个过程,直接返回静态的SSI文件。这可以...

    ssi整合开发包括分页

    在IT行业中,SSI(Struts2、Spring、iBatis)整合开发是一种常见的Web应用程序架构模式,它将三个强大的框架结合在一起,以实现高效的MVC(Model-View-Controller)设计模式。本教程将以"ssi整合开发包括分页"为例,...

    ext-ssi集成开发

    EXT-SSI集成开发是一种在Web应用中结合EXT.js与Server-Side Includes(SSI)技术的后端框架设计。EXT.js是一个强大的JavaScript库,主要用于构建富客户端的用户界面,而SSI则是一种服务器端脚本语言,它允许在HTML...

    Eclipse下开发SSI框架开发必备JAR包

    本资源基本包含了Eclipse IDE工具下对...其兼容性本人已完全测试通过,能支持WEB开发的绝大部分应用(SSI)。别看资源分相对其他资源有较高,但是绝对比你一个一个单独下划算、省时、易用,为新手节省了不少开发成本。

Global site tag (gtag.js) - Google Analytics