Seam的集成测试

简介: 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/2188489 Seam的集成测试Seam的集成测试 Integration Testing 集成测试和单元测试一起使用。
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/2188489

Seam的集成测试

Seam的集成测试
Integration Testing
集成测试和单元测试一起使用。它应该测试单元的整合。实际上,大多数集成测试模拟客户端调用,因此,你可以有一个完整的功能测试,从表现层到业务逻辑层,再到持久层。
这些测试非常有用,能更深入开发,调整后端系统。它立即让你明白是否你在业务层所做的改变将影响Web页面中断。当然,这取决于你是否及时更新测试,一旦你更新了JSF页面,也应该对测试做相应更改。
要执行集成测试,应该使用TestNG和Seam基础类的组合来模拟Faces请求。此例还使用早先的单元测试的例子。集成测试运行来增加一个房子。
Java代码
  1. public class HouseTest extends SeamTest{   
  2.     @Test  
  3.     public void testAddHouse() throws Exception{   
  4.         new FacesRequest(){   
  5.             @Override  
  6.             protected void processValidations() throws Exception {   
  7.                 validateValue("#{house.address}""123 Main Street");   
  8.                 validateValue("#{house.city}""Columbus");   
  9.                 validateValue("#{house.state}""OH");   
  10.                 assert !isValidationFailure();   
  11.             }   
  12.             @Override  
  13.             protected void updateModelValues() throws Exception {   
  14.                 setValue("#{house.address}""123 Main Street");   
  15.                 setValue("#{house.city}""Columbus");   
  16.                 setValue("#{house.state}""OH");   
  17.             }   
  18.             @Override  
  19.             protected void invokeApplication() {   
  20.                 assert invokeMethod("#{salesManager.addHouse}").equals("success");   
  21.             }   
  22.             @Override  
  23.             protected void renderResponse() {   
  24.                 assert getValue("#{house.address}").equals("123 Main Street");   
  25.                 assert getValue("#{house.city}").equals("Columbus");   
  26.                 assert getValue("#{house.state}").equals("OH");   
  27.             }   
  28.         }.run();   
  29.     }   
  30. }  
第一件事是继承SeamTest,SeamTest类是Seam核心类的一部分。继承此类后,就可以使用两个核心操作创建一个请求。你可以使用超类来创建一个FacesRequest或者NonFacesRequest。这两个类是SeamTest对象的内部类,我们会创建类的实现通过重写方法调用。每个方法调用代表了JSF生命周期的一部分。可以拦截此方式,测试请求的各个部份。方法:
getViewId() JSF视图ID或非Faces请求的页面名
applyRequestValues() 应用请求值阶段定义JSF和组件页面的交互
processValidations() 处理验证阶段的方法
updateModelValues() 更新模型值阶段的方法
invokeApplication() 用于方法调用期间和重写方法
renderResponse() 呈现响应期间出现
你可以选择要覆盖的方法。在例子中,我们验证和设置值传递到业务层,在House对象设置值,验证项,然后提供House对象到数据库。
从长远看,测试能节省宝贵的时间。它帮助识别错误和应用程序异常行为,尤其是在大项目中,测试占了相当大比例的时间。 
目录
相关文章
|
Kubernetes 测试技术 容器
实践 Fake ClientSet 单元测试
在 Kubernetes 相关的开发中,client-go 是最常用的,对于 client-go 相关的代码我们可以通过 fake ClientSet 来编写单元测试,本文将实践利用 fake ClientSet
1609 0
|
5月前
|
运维 Devops 测试技术
单元测试问题之什么是测试金字塔
单元测试问题之什么是测试金字塔
|
敏捷开发 定位技术 开发者
poc Proof of Concept
Proof of Concept(简称 POC)是概念验证的意思。在软件开发领域,POC 通常用于验证某个想法或概念是否可行。它通常是一个小型项目或原型,可以通过实际操作来证明某个想法或技术的有效性。POC 可以帮助开发者在项目开始之前确定技术的可行性,减少开发过程中的风险。
1517 3
|
7月前
|
测试技术 数据库 UED
【白盒测试】单元测试的理论基础及用例设计技术(6种)详解
【白盒测试】单元测试的理论基础及用例设计技术(6种)详解
414 1
|
存储 SQL 缓存
单元测试的五个主要准则
自动化测试是所有大型软件项目不可或缺的一部分。它是提高质量、生产力和灵活性的一种手段。 因此,对系统架构进行合理地设计以便利后续的开发和自动化测试变得至关重要。
|
SQL Java 测试技术
论单元测试之重要性
单元测试的重要性不言而喻,自我开发生涯以来,从很少注释过过场场,到非常重视。 单元测试为什么会让人忽视呢? 通常情况像一些查询或者增删改之类,拿我来说,即便报错我大概一扫,我就知道错误是什么了,该如何排查,因为就拿SpringMVC来说或者MyBatis等,再不济就是Spring的依赖注入问题,拿MyBatis来说,要么就是sql问题,要么就是参数问题,再不济就是与Spring动态扫描有关或者是mybatis中专门写sql的配置文件某个地方语法错误等,这些错误都是可预见的,说句不好听的话,再不济百度一搜,顿时分分秒就KO了。
1167 0