Seam的集成测试
Integration Testing
集成测试和单元测试一起使用。它应该测试单元的整合。实际上,大多数集成测试模拟客户端调用,因此,你可以有一个完整的功能测试,从表现层到业务逻辑层,再到持久层。
这些测试非常有用,能更深入开发,调整后端系统。它立即让你明白是否你在业务层所做的改变将影响Web页面中断。当然,这取决于你是否及时更新测试,一旦你更新了JSF页面,也应该对测试做相应更改。
要执行集成测试,应该使用TestNG和Seam基础类的组合来模拟Faces请求。此例还使用早先的单元测试的例子。集成测试运行来增加一个房子。
public class HouseTest extends SeamTest{
@Test
public void testAddHouse() throws Exception{
new FacesRequest(){
@Override
protected void processValidations() throws Exception {
validateValue("#{house.address}", "123 Main Street");
validateValue("#{house.city}", "Columbus");
validateValue("#{house.state}", "OH");
assert !isValidationFailure();
}
@Override
protected void updateModelValues() throws Exception {
setValue("#{house.address}", "123 Main Street");
setValue("#{house.city}", "Columbus");
setValue("#{house.state}", "OH");
}
@Override
protected void invokeApplication() {
assert invokeMethod("#{salesManager.addHouse}").equals("success");
}
@Override
protected void renderResponse() {
assert getValue("#{house.address}").equals("123 Main Street");
assert getValue("#{house.city}").equals("Columbus");
assert getValue("#{house.state}").equals("OH");
}
}.run();
}
}
第一件事是继承SeamTest,SeamTest类是Seam核心类的一部分。继承此类后,就可以使用两个核心操作创建一个请求。你可以使用超类来创建一个FacesRequest或者NonFacesRequest。这两个类是SeamTest对象的内部类,我们会创建类的实现通过重写方法调用。每个方法调用代表了JSF生命周期的一部分。可以拦截此方式,测试请求的各个部份。方法:
getViewId() JSF视图ID或非Faces请求的页面名
applyRequestValues() 应用请求值阶段定义JSF和组件页面的交互
processValidations() 处理验证阶段的方法
updateModelValues() 更新模型值阶段的方法
invokeApplication() 用于方法调用期间和重写方法
renderResponse() 呈现响应期间出现
你可以选择要覆盖的方法。在例子中,我们验证和设置值传递到业务层,在House对象设置值,验证项,然后提供House对象到数据库。
从长远看,测试能节省宝贵的时间。它帮助识别错误和应用程序异常行为,尤其是在大项目中,测试占了相当大比例的时间。
分享到:
相关推荐
9. **持续集成与自动化测试**: - **Jenkins**:定期执行性能测试,确保性能稳定。 - **SonarQube**:代码质量分析,发现潜在性能问题。 通过上述测试点,我们可以系统地分析和改进Seam应用的性能。同时,持续...
4. **测试框架**: Seam 2.0引入了集成测试框架,使得单元测试和集成测试变得更加方便。 5. **国际化(i18n)和本地化(l10n)支持**: 提供了全面的国际化和本地化解决方案,方便多语言应用的开发。 **五、Seam的...
将Seam集成到现有项目中是非常简单的,这是因为JSF生命周期仍然是Seam应用程序的核心部分。为了将Seam添加到项目中,开发者只需按照官方文档的指导进行操作即可。通常情况下,这涉及到以下几个步骤: 1. **安装依赖...
7. **测试与调试**:掌握Seam的测试工具和策略,确保代码质量。 8. **Seam组件**:了解如Conversation、Transactions、邮件服务等Seam内置组件的使用方法。 9. **实时性与Ajax**:探索Seam如何实现实时更新和Ajax...
8. **测试支持**:Seam提供了一套完整的测试工具,包括单元测试、集成测试和端到端测试,确保应用的质量。 然而,根据描述中的反馈,英文版可能在阅读体验上并不理想,可能需要花费更多的时间和精力去理解。对于...
7. **测试支持**:Seam的测试工具和API使得对整合后的JSF和Hibernate应用进行单元测试和集成测试变得更为便捷。 通过这些特性,Seam成功地将复杂的业务逻辑、持久化和用户界面融合在一起,为开发者提供了高效、灵活...
6. **Seam配置**:`seam-getting-started-build.xml`文件很可能是Seam项目的构建文件,可能包含Maven或Ant的配置信息,用于编译、测试和打包项目。理解如何配置Seam项目以及依赖管理是非常重要的。 7. **开发环境**...
9. **测试与调试**:Seam提供了全面的测试支持,包括单元测试和集成测试,以及强大的日志和调试工具。 10. **实战案例**:书中通过丰富的实际案例和示例代码,让读者了解如何在真实项目中应用Seam,从而提升开发...
8. **测试与调试**:Seam支持单元测试和集成测试,通过其测试框架可以方便地对应用程序进行验证。它还提供了强大的日志和调试工具,帮助开发者快速定位和解决问题。 9. **国际化与本地化**:Seam支持多语言环境,...
Seam 通过集成多种 Java EE 技术并提供丰富的组件模型,大大减少了开发过程中所需编写的代码量,使得开发人员能够专注于业务逻辑的实现,而非底层细节。 #### 3.2 提高可维护性 Seam 的组件模型支持高度模块化的...
2. **在Tomcat服务器上运行示例**:Tomcat作为轻量级的应用服务器,可以快速部署简单的Seam应用,便于学习和测试。 ##### 1.2 第一个例子:注册示例 这个示例展示了如何使用Seam实现用户注册功能,包括前端页面...
首先,SeamTest的核心在于它与Seam框架的紧密集成。Seam是一个全面的开发平台,旨在简化Java EE应用的构建,而SeamTest则是其测试工具链的重要组成部分。通过使用SeamTest,开发者可以避免手动配置测试环境,因为它...
为了支持测试和调试,压缩包可能还包括`jboss-as-server.jar`或类似的文件,它们与特定的应用服务器(如JBoss AS)相关,用于部署和运行Seam应用。 总的来说,这个“seam需要的jar包”集合是构建和运行Seam应用程序...
Seam是一种Java EE框架,它在开发企业级应用...此外,你还可以了解到Seam的其他特性,如国际化、测试支持和性能优化等。总之,深入学习Seam对于提升Java EE开发能力,尤其是构建大型企业级应用的能力,是非常有帮助的。
《Seam in Action》这本书详细介绍了如何使用Seam进行实际项目开发,包括设置环境、创建Seam应用、使用Seam组件、调试和测试等步骤。读者可以通过这本书了解到Seam的精髓,掌握如何利用Seam构建高效的企业级应用。 ...
- **工作原理**:这个示例演示了如何利用 SEAM 和 jBPM 来实现工作流集成,具体包括任务的分配、跟踪和完成等。 ##### 1.5 SEAM 页面流:猜数字游戏示例 - **代码分析**: - 通过 SEAM 的页面流功能实现简单的猜...
- **Seam 和 jBPM 集成**:通过将 Seam 组件与 jBPM 流程引擎相结合,实现业务流程的自动化。 - **任务管理**:Seam 负责用户界面和交互逻辑,jBPM 负责处理任务的执行流程。 **1.4.2 工作原理** - **流程定义**:...
在数据管理方面,Seam集成了Hibernate,提供了一种简单的方式来操作数据库。使用Seam的`@Entity`和`@PersistenceContext`注解,开发者可以直接在组件中进行CRUD(创建、读取、更新、删除)操作,而无需编写大量的DAO...
8. **测试与部署**:Seam提供了测试框架,可以进行单元测试和集成测试。完成开发后,将工程打包成WAR文件,部署到JBoss AS上进行运行。 9. **错误处理与日志**:Seam提供了一套强大的错误处理机制,包括异常处理和...