[原创于: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
分享到:
相关推荐
3. **Seam生成器(Seam Generator)**: 提供了一套工具,用于快速生成Seam项目和组件的模板代码,加速开发进程。 4. **测试框架**: Seam 2.0引入了集成测试框架,使得单元测试和集成测试变得更加方便。 5. **国际...
1. **在JBoss AS上运行示例**:首先需要安装配置JBoss AS服务器,然后导入Seam项目到服务器中进行部署。 2. **在Tomcat服务器上运行示例**:Tomcat作为轻量级的应用服务器,可以快速部署简单的Seam应用,便于学习和...
6. **开发流程和实践**:通过实例学习Seam的开发过程,包括项目构建、调试、测试等环节。 7. **API和配置**:通过官方参考文档,深入研究Seam的配置选项和API使用,解决实际开发中的问题。 这些书籍将帮助你成为一...
- **集成测试**:学会编写集成测试来验证Seam应用的功能和性能。 #### 四、综合运用 **1. 结合JSF2与JBoss Seam** - **互补性**:JSF2提供了丰富的组件库和强大的视图管理功能,而Seam则加强了组件之间的交互和...
### JBoss Seam 2.01GA REF DOC #### 引言:JBoss Seam概览与功能介绍 JBoss Seam 是一个为简化企业级 Java 应用开发而设计的框架。它结合了 JavaServer Faces (JSF)、Java Persistence API (JPA) 和 Java ...
使用NetBeans的“新建项目”向导,选择“Web”类别下的“jBoss Seam项目”。输入项目名,选择所需的Java EE版本(通常为5或6),然后指定jBoss服务器的位置。 4. **配置Seam组件**: 在Seam项目中,你可以通过...
JBoss Seam 简介......................................................................................................................................................................... 11 Chapter 1. ...
在深入探讨技术细节的同时,《深入浅出JBoss Seam》也会涵盖实际项目中的最佳实践和常见问题。例如,如何利用Seam进行状态管理,如何使用Seam的事件模型实现组件间的通信,以及如何利用Seam的安全框架保护应用免受...
确保在创建新项目时选择“General”类型的项目,而不是“Java Project”,因为Seam项目需要的不仅仅是Java代码。 3. **项目设置**:如果你的Eclipse默认JDK不是Java SE 5或6,需要在Project Properties中更改Java...
- **创建 Eclipse 项目**:详细介绍如何使用 Eclipse IDE 创建新的 Seam 项目。 - **创建有表单的操作**:指导开发者如何添加表单到应用中,并处理表单提交的数据。 - **从现有数据生成应用程序**:展示了如何根据...
3. **创建Seam项目**:使用Seam生成器(如seam-gen工具)或者IDE插件(如Eclipse的Seam插件)创建一个新的Seam项目。 4. **配置项目**:在项目的配置文件中(如pom.xml或build.xml),添加Seam库的依赖,并配置相应...
2. **配置与部署**:介绍如何设置Seam项目,包括pom.xml、seam.properties和web.xml的配置。 3. **JSF集成指南**:深入理解Seam与JSF的交互,包括Facelets模板和Seam组件的使用。 4. **EJB和CDI集成**:讲解Seam如何...
书中涵盖了Seam的核心概念,如组件管理、事件处理、安全、国际化和测试。此外,还深入探讨了Seam与JSF、RichFaces的结合使用,以及如何利用Seam进行服务端状态管理,提升应用性能。 《JBoss Seam》是另一本关于Seam...
书中可能详细介绍了如何创建JSF页面、如何配置和使用Seam组件、如何进行数据库交互、以及如何进行单元测试和集成测试等实践内容。通过阅读这本书,读者不仅可以了解JSF2 API的基本使用,还能掌握如何将JSF与JBoss ...
### JBoss Seam: Simplicity and Power Beyond Java EE #### 一、Seam简介与特点 **JBoss Seam** 是一款强大的开源框架,它在**Java EE** 的基础上提供了更为简单且功能强大的开发方式,旨在简化企业级应用的开发...
结合提供的文件,我们可以推断这是一个关于构建和部署Java EE应用程序的环境配置,可能涉及到使用Maven进行项目构建,Ant进行特定任务的自动化,JBoss Seam作为开发框架,而JDK则是运行环境的基础。Wildfly-10.1.0....
- **在Tomcat上运行示例:** 提供了在轻量级的Tomcat服务器上部署Seam项目的步骤。 - **运行示例测试:** 解释了如何使用自动化测试工具验证Seam应用程序的功能。 2. **第一个Seam应用:注册示例** - **理解代码...
标题:JBOSS SEAM 描述与标签:JBOSS SEAM JBOSS SEAM是一种基于Java EE 5框架的开发工具,旨在简化企业级应用程序的开发过程。它通过提供一套集成的组件模型,使得开发者能够更加专注于业务逻辑的实现,而无需...