追求代码质量 - 测试Struts遗留的应用程序 - 编程入门网
中(在清单 5 中)定义的 ChangePasswordForm。要模拟这个行为,在测试用例 中必须有另一个逻辑映射 —— JSP 表单名称必须映射到值。在口令修改场景中 ,提交了四个参数:username、currentPassword、newPassword1 和 newPassword2( newPassword2 参数是多数 Web 页面为了校验新口令正确的确 认信息)。
成功的测试用例! 请求路径和参数映射好之后,编写测试用例就成了利用 MockStrutsTestCase API 设置相关口令值的问题,如清单 6 所示。在这个测试用例中,用户 Jane 的口令从 “admin” 改成了 “meme”。 清单 6. 一个验证口令修改成功的简单测试用例
setRequestPathInfo() 方法配置路径以映射到 Action 类, addRequestParameter() 方法把来自 JSP 文件的参数名称映射到值。例如,在 清单 6 中,username 参数映射到 “jane”。 还请注意清单 6 中的最后两行。actionPerform() 方法实际上让 Struts 去 调用对应的 Action 类。如果这个方法没被调用,什么也不会发生。最后调用的 方法 verifyForward() 是在 MockStrutsTestCase 类中找到的一个类似于断言 的方法,它验证正确的转发。在 Struts 中,这是一个 String,通常映射到成 功或失败状态。(请注意,清单 5 中的 XML 定义了 “success” 转发。) 追求代码质量 - 测试Struts遗留的应用程序(4)时间:2010-12-12 IBM Andrew Glover用 DbUnit 进行的可重复的成功 这时,您可能希望工作完成 —— 毕竟已经编写了一个企图验证口令修改的 测试。但是还缺乏更深的验证。确实,这个方便的框架调用了 Struts,但是代 码依赖于数据库。如果希望能够不止一次地运行这个测试,比如在构建过程中, 就需要让它可重复。 由于一些特定的假设,所以 清单 6 中的测试用例不是可重复的。首先,测 试用例假设在系统中已经 有一个名为 “jane” 的用户,它的口令是 “admin ”。其次,测试用例假设在某些永久存储 中口令 “admin” 被更新成 “meme ”。正如所写的那样,只要代码没有生成异常,ActionForm 成功验证,Struts 就假定事情工作良好,测试用例也是一样。 现在需要的是更深层次的验证 —— 在数据库层次。对于应当更新口令的测 试用例来说,理想情况下应当在数据库上 执行检查,确保那里有一个新口令。 对于口令不应当修改的测试来说,需要进行验证,真正检验没有修改 口令。最 后,要让这个测试套件可重复,最好是不要 对数据完整性做任何假设。 DbUnit 是个专门方便把数据库放进测试状态中已知状态的 JUnit 扩展。使 用 XML 种子文件,可以把特定数据插入到测试用例可以依靠的数据库中。而且 ,使用 DbUnit API,可以容易地比较数据库的内容和 XML 文件的内容,从而提 供一个在应用程序代码之外 校验预期数据库结果的机制。 用 DbUnit 进行测试 要使用 DbUnit,需要两样东西: 通过普通 JDBC 的数据库连接 一个文件,包含需要放到数据库中的数据 清单 7 是一个 DbUnit 种子文件,只定义了几样东西:首先,有一个叫做 user 的表和另一个叫做 user_role 的表。在 user 表 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |