Seam的集成测试
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
c hszs的专栏
老刀的Blog
S eam的集成测试
分类: JavaEE开发 2008-03-16 20:46 518人阅读 评论(0) 收藏举报
seam测试exceptionjsf单元测试testing
S eam的集成测试
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对象到数据库。
从长远看,测试能节省宝贵的时间。
它帮助识别错误和应用程序异常行为,尤其是在大项目中,测试占了相当大比例的时间。