seam的testNG我就不多说了,文档里面有
我在这里想说的是文档里面没有说清楚的和我得出的一些经验,希望对大家有所帮助
首先我想说我这里都是集成测试,集成测试是什么测试呢,按照文档里面的说法,就是用j2se模拟j2ee服务器的应用环境然后在模拟浏览器发出请求或客户段的操作,最后在是断言它的返回值是不是你预期的返回值,是则通过,否则失败。(所以tomcat上用seam的也可以用testNG做测试,但是需要
自己配置一下classpath)
下面来看看一个例子
public class RegisterTest extends SeamTest
{
@Test
public void testRegister() throws Exception
{
new FacesRequest("/register.xhtml") {//模拟浏览器发出一次FacesRequest(其实就是一次jsf的页面提交,GetRequest()就是普通的访问)
/*
这是一次典型的JSF 请求
下面各个方法就是JSF的各个生命周期,如果不懂就看看JSF的自定义组件
*/
@Override
protected void processValidations() throws Exception
{
validateValue("#{user.username}", "1ovthafew");
validateValue("#{user.name}", "Gavin King");
validateValue("#{user.password}", "secret");
assert !isValidationFailure();
}
@Override
protected void updateModelValues() throws Exception
{
setValue("#{user.username}", "1ovthafew");
setValue("#{user.name}", "Gavin King");
setValue("#{user.password}", "secret");
}
@Override
protected void invokeApplication()
{
assert invokeMethod("#{register.register}").equals("success");
}
@Override
protected void renderResponse()
{
assert getValue("#{user.username}").equals("1ovthafew");
assert getValue("#{user.name}").equals("Gavin King");
assert getValue("#{user.password}").equals("secret");
}
}.run();
}
...
}
上面是一个典型的测试代码
但是有时我们的应用是有安全机制的,如果上面的Action有安全限制怎么办呢?比如我们的应用有用户机制,执行Action的时候需要登陆或是其他权限呢?
我这里介绍一种方法
import org.jboss.seam.mock.SeamTest;
import org.testng.annotations.Test;
public class AddItemActionTest extends SeamTest{
@Test
public void AddItemAction() throws Exception{
String id=new FacesRequest(){//执行登陆操作然后,他会返回一个id相当与一个http session的标示
protected void invokeApplication(){
setValue("#{identity.username}", "superadmin");
setValue("#{identity.password}", "superadmin");
invokeMethod("#{identity.login}");
assert getValue("#{identity.loggedIn}").equals(true);
}
}.run();
new FacesRequest("/admin/manageitem.xhtml",id){//再在测试时使用这个id这样权限问题就可以自由控制了
protected void processValidations() throws Exception
{
this.
validateValue("#{additem.item.name}", "test");
/*validateValue("#{query.item.superitem}", null);
validateValue("#{query.item.users}",null);
validateValue("#{guery.item.subitem}",null);
*/
assert !isValidationFailure();
}
@Override
protected void updateModelValues() throws Exception
{
super.updateModelValues();
setValue("#{additem.item.name}","test");
/*setValue("#{register.user.name}", "lxinblog");
setValue("#{register.user.password}", "123456");
setValue("#{register.user.email}","lxwan2354@kaass.com");
setValue("#{register.user.nickname}","lx");
*/
}
@Override
protected void invokeApplication()
{
assert invokeMethod("#{additem.addItem}")==null;
}
@Override
protected void renderResponse()
{
assert getValue("#{additem.item.name}").equals("test");
assert getValue("#{additem.item.id}")!=null;
}
}.run();
}
}
以上都是我得出的经验如有不对请指正
分享到:
相关推荐
• 身份管理 - 用于管理Seam程序中所涉及的用户及角色的接口 • 权限验证 - 一个应用十分广泛的权限验证框架,支持用户角色、持久化和基于规则的权限设置,能够灵活地实现属于用户自己的安全设置 • 权限管理 - 一组...
seam+richfaces环境框架的配置文件,经过我多次尝试才配置好的环境配置文件,很有用,适合刚接触这些技术的初学者,希望大家支持!
eam适应快速开发、简化框架的趋势,Seam给我的感觉像是一个异常简单的MVC框架
Seam全称是Jboss Seam,是一个Java EE 5框架。它通过把JSF与EJB3.0组件合并在一起,以及利用JDK5.0的Annotation技术,从而为开发基于Web的企业应用程序提供一个最新的模式。
SEAM 中文开发指南(官方)
NULL 博文链接:https://yuexiangcheng007-sina-com.iteye.com/blog/444386
seam 中文文档 pdf 格式 JSF+EJB3.0快速开发框架Seam的中文版向导。。。
seam下一代web开发框架
个人收集整理的最全面seam文档 包括seam_reference(中、英) richfaces jsf a4j 以及seam一些其他主要功能
seam carving 测试数据集免费分享
Seam Security 中的验证特性是基于JAAS (Java Authentication and Authorization Service)开发的,它提供了用来进行用户身份认证的高度可配置的接口。然而,针对复杂多变的验证需求,Seam Security 提供了一套非常...
Jboss Seam 一个深度集成框架中文书
seam框架需要的所有jar包,支持seam ui组件
Seam 中文开发指南 seam中文文档
1.3. Seam 中的可点击列表:消息示例............................................................................................................................. 27 1.3.1. 理解代码.........................
Seam全称是Jboss Seam,是一个Java EE 5框架。它通过把JSF与EJB3.0组件合并在一起,以及利用JDK5.0的Annotation技术,从而为开发基于Web的企业应用程序提供一个最新的模式。Seam可以让你把EJB组件直接绑定到JSF页面...
JBOSS SEAM组件中文手册 Seam_2.0_Reference_zh_CN
该资源介绍了seam 整合hibernate和jsf
整理自jboss seam 中文站,压缩为chm格式,便于广大jboss seam爱好者阅读,所有版权归jboss seam中文站所有。
seam框架的相关知识总结,比较全面,希望有用