`
happylo
  • 浏览: 47196 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

JBoss Seam项目测试

阅读更多

[原创于:http://happydev.iteye.com]

 

按Seam参考手册,JBoss Seam项目的测试可以使用org.jboss.seam.mock.SeamTest来完成。

但在实际的使用过程中还真的很是折腾人,下面将这个过程描述如下,让各位看官少走的弯路。

 

一、环境

eclipse-jee-ganymede-SR1-win32

jboss-seam-2.1.1.GA

JBossTools-3.0.0.Beta1-ALL-win32

jboss-4.2.3.GA-jdk6

 

二、示例工程准备

测试工程就是直接在开发环境中使用Seam Web Project向导创建一个标准示例工程。

然后使用Seam Entity向导快速创建一个标准的对User实体的CRUD操作实体类、列表页、编辑页。

在使用Seam Web Project向导创建一个标准示例工程时,会自动创建一个相关的测试工程。

示例工程的实体如下:

 

 

@Entity
public class User implements Serializable
{
    // seam-gen attributes (you should probably edit these)
    private Long id;
    private Integer version;
    private String name;

    // add additional entity attributes

    // seam-gen attribute getters/setters with annotations (you probably should edit)

    @Id @GeneratedValue
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    @Version
    public Integer getVersion() {
        return version;
    }

    private void setVersion(Integer version) {
        this.version = version;
    }

    @Length(max = 20)
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

 

 其它的由向导生成的UserHome.java、UserList.java、user.xhtml、userList.xhtml就不在这一一列出了。

 

三、测试代码

基于上面的示例工程,写的测试代码如下:

 

import java.util.List;

import org.jboss.seam.mock.SeamTest;
import org.testng.annotations.Test;

import cn.test.entity.User;

public class UserTest extends SeamTest {
	@Test
	public void testAddUser() throws Exception {
		new NonFacesRequest("/userList.xhtml") {
			protected void renderResponse() throws Exception {
				Object value = getValue("#{userList.resultList}");
				assert value != null && value instanceof List;
				List<User> users = (List<User>) value;
				assert users.size() == 0;
			}
		}.run();
		new FacesRequest("/user.xhtml") {
			protected void updateModelValues() throws Exception {
				setValue("#{userHome.instance.name}", "Test");
			}

			protected void invokeApplication() throws Exception {
				invokeMethod("#{userHome.persist}");
			}

			protected void renderResponse() throws Exception {
				Object value = getValue("#{userList.resultList}");
				assert value != null && value instanceof List;
				List<User> users = (List<User>) value;
				assert users.size() == 1;
			}
		}.run();
	}
}

 

 

四、运行测试

在运行测试过程中遇到了以下三个麻烦:

1、一开始运行测试,便直接报以下错误

 

 写道
[Parser] Running:
C:\test\workspace_demo\FF-test\temp-testng-customsuite.xml

ERROR
[org.jboss.kernel.plugins.dependency.AbstractKernelController] Error installing to Described: name=BeanDeployer st
ate=PreInstall

 

 根据查网上资料,是因为JDK版本的原因,需在JVM上加上以下参数:

 

 写道
-Dsun.lang.ClassLoader.allowArraySyntax=true

 

 

2、再运行测试,还是报错

 写道
Connection timed out

 再找原因,是因为在启动嵌入式JBoss时要到网上查找一个DTD文件,但我的本机上网需要代理,于是在JVM下继续添加以下参数:

 

 写道
-Dhttp.proxyHost=x.x.x.x -Dhttp.proxyPort=yyyy

 

 3、再运行测试,嵌入式JBoss已正常启动,但加载Seam工程时出错了

 

 写道
Two components with the same name and precedence

 

 再找原因,得知是jboss-seam-2.1.1.GA版本的Bug,解决办法是将Seam工程中的seam.properties删除即可,一试,果然,郁闷中...

 

五、测试成功

ok

 

 

 

 

 

 

 

分享到:
评论
1 楼 灵灵然 2009-06-04  
楼主的小节!seam的Testng测试理论上讲是:加jar包,配置类容器,得到组件实例,真的做起来,确实有很多的麻烦,总之想要跑“绿”不简单,不过成功过一次,就体会了testng测试的好处了

相关推荐

    JBOSS SEAM组件中文手册

    3. **Seam生成器(Seam Generator)**: 提供了一套工具,用于快速生成Seam项目和组件的模板代码,加速开发进程。 4. **测试框架**: Seam 2.0引入了集成测试框架,使得单元测试和集成测试变得更加方便。 5. **国际...

    Jboss Seam中文版

    1. **在JBoss AS上运行示例**:首先需要安装配置JBoss AS服务器,然后导入Seam项目到服务器中进行部署。 2. **在Tomcat服务器上运行示例**:Tomcat作为轻量级的应用服务器,可以快速部署简单的Seam应用,便于学习和...

    Jboss Seam 三本最受欢迎的教材

    6. **开发流程和实践**:通过实例学习Seam的开发过程,包括项目构建、调试、测试等环节。 7. **API和配置**:通过官方参考文档,深入研究Seam的配置选项和API使用,解决实际开发中的问题。 这些书籍将帮助你成为一...

    Beginning JSF2 APIs and JBoss Seam

    - **集成测试**:学会编写集成测试来验证Seam应用的功能和性能。 #### 四、综合运用 **1. 结合JSF2与JBoss Seam** - **互补性**:JSF2提供了丰富的组件库和强大的视图管理功能,而Seam则加强了组件之间的交互和...

    jboss seam 2.01GA REF DOC

    ### JBoss Seam 2.01GA REF DOC #### 引言:JBoss Seam概览与功能介绍 JBoss Seam 是一个为简化企业级 Java 应用开发而设计的框架。它结合了 JavaServer Faces (JSF)、Java Persistence API (JPA) 和 Java ...

    NetBeans下jboss seam开发入门

    使用NetBeans的“新建项目”向导,选择“Web”类别下的“jBoss Seam项目”。输入项目名,选择所需的Java EE版本(通常为5或6),然后指定jBoss服务器的位置。 4. **配置Seam组件**: 在Seam项目中,你可以通过...

    JBoss Seam 工作原理、seam和hibernate的范例、RESTFul的seam、seam-gen起步、seam组件、配置组件、jsf,jboss、标签、PDF、注解等等

    JBoss Seam 简介......................................................................................................................................................................... 11 Chapter 1. ...

    深入浅出JBoss Seam

    在深入探讨技术细节的同时,《深入浅出JBoss Seam》也会涵盖实际项目中的最佳实践和常见问题。例如,如何利用Seam进行状态管理,如何使用Seam的事件模型实现组件间的通信,以及如何利用Seam的安全框架保护应用免受...

    JBoss Seam工程的创建

    确保在创建新项目时选择“General”类型的项目,而不是“Java Project”,因为Seam项目需要的不仅仅是Java代码。 3. **项目设置**:如果你的Eclipse默认JDK不是Java SE 5或6,需要在Project Properties中更改Java...

    jboss seam 中文文档

    - **创建 Eclipse 项目**:详细介绍如何使用 Eclipse IDE 创建新的 Seam 项目。 - **创建有表单的操作**:指导开发者如何添加表单到应用中,并处理表单提交的数据。 - **从现有数据生成应用程序**:展示了如何根据...

    深入浅出-jbossseam说明

    3. **创建Seam项目**:使用Seam生成器(如seam-gen工具)或者IDE插件(如Eclipse的Seam插件)创建一个新的Seam项目。 4. **配置项目**:在项目的配置文件中(如pom.xml或build.xml),添加Seam库的依赖,并配置相应...

    jboss seam 学习资料,seam in action和官方手册

    2. **配置与部署**:介绍如何设置Seam项目,包括pom.xml、seam.properties和web.xml的配置。 3. **JSF集成指南**:深入理解Seam与JSF的交互,包括Facelets模板和Seam组件的使用。 4. **EJB和CDI集成**:讲解Seam如何...

    《SeamInAction》+《JbossSeam》+《官方中文指南》

    书中涵盖了Seam的核心概念,如组件管理、事件处理、安全、国际化和测试。此外,还深入探讨了Seam与JSF、RichFaces的结合使用,以及如何利用Seam进行服务端状态管理,提升应用性能。 《JBoss Seam》是另一本关于Seam...

    图书:JSF2 API和JBoss Seam入门

    书中可能详细介绍了如何创建JSF页面、如何配置和使用Seam组件、如何进行数据库交互、以及如何进行单元测试和集成测试等实践内容。通过阅读这本书,读者不仅可以了解JSF2 API的基本使用,还能掌握如何将JSF与JBoss ...

    JBoss Seam: Simplicity and Power Beyond Java EE

    ### JBoss Seam: Simplicity and Power Beyond Java EE #### 一、Seam简介与特点 **JBoss Seam** 是一款强大的开源框架,它在**Java EE** 的基础上提供了更为简单且功能强大的开发方式,旨在简化企业级应用的开发...

    jboss seam maven ant jdk

    结合提供的文件,我们可以推断这是一个关于构建和部署Java EE应用程序的环境配置,可能涉及到使用Maven进行项目构建,Ant进行特定任务的自动化,JBoss Seam作为开发框架,而JDK则是运行环境的基础。Wildfly-10.1.0....

    Jboss seam2.1版本开发参考文档

    - **在Tomcat上运行示例:** 提供了在轻量级的Tomcat服务器上部署Seam项目的步骤。 - **运行示例测试:** 解释了如何使用自动化测试工具验证Seam应用程序的功能。 2. **第一个Seam应用:注册示例** - **理解代码...

    JBOSS SEAM

    标题:JBOSS SEAM 描述与标签:JBOSS SEAM JBOSS SEAM是一种基于Java EE 5框架的开发工具,旨在简化企业级应用程序的开发过程。它通过提供一套集成的组件模型,使得开发者能够更加专注于业务逻辑的实现,而无需...

Global site tag (gtag.js) - Google Analytics