集成单元测试(Catcus).docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
集成单元测试(Catcus)

集成单元测试 如果您撰写了下面这样一个Servlet程式,并想为它进行测试: ● LoginServlet.java package onlyfun.caterpillar; import javax.servlet.http.*; public class LoginServlet extends HttpServlet { public boolean isValidUser(HttpServletRequest request) { String username = request.getParameter(username); String password = request.getParameter(password); if (username == null || password == null || !username.equals(justin) || !password.equals(123456)) { return false; } else { return true; } } } 为了要能对isValidUser()方法进行测试,需要一个HttpServletRequest物件,而 HttpServletRequest物件是由 Servlet Container 管理的,它有即定的生命周期,有其收集的资讯,您不能单纯的创建一个HttpServletRequest就打算交差了事。 有几个方法可以对isValidUser()方法进行测试,其中之一自然就是直接将LoginServlet置于 Container 之中,如此一来,isValidUser()若能进行测试,您不仅测试了方法本身,也测试了方法与 Container 所管理的资源之交互行为,我们称这样的测试为 “In-Container测试”。 对于In-Container测试,您不仅测试了单元的逻辑行为,也测试了单元能在 Container 中正确的运行,从测试的角度来看,这样的测试是单元测试的一种,但范围更广,我们称其为集成单元测试(Integration Unit Testing)。相较于集成单元测试,我们称之前只使用JUnit进行的测试为“逻辑单元测试”(Logic Unit Test),In-Container测试是集成单元测试的一种,要实际执In-Container测试,要比单纯的逻辑单元测试复杂的多,您要将 Servlet 置于容器之中、编写 web.xml、启动容器、运行测试程式对 Servlet 进行测试等等。 Cactus 扩展了 JUnit,被设计来辅助您进行In-Container测试,它在很大部份上隐藏了非测试逻辑的交互细节,只留下与测试相关的部份等您来实现,从使用的角度来说,您使用Cactus进行测试,与您使用JUnit进行测试时没有太大的不同。 1 简介Cactus Cactus协助您进行 In-Container 测试,其基本原理即让Container实际建立相关的物件,例如HttpServletRequest、HttpServletResponse等等, Cactus为您保留这些物件,让您可以指定给所要测试的单元方法,这些物件实际上仍由Container管理,所以您的Servlet等所测试的单元方法,会接近于真正运行于Container之中。来看看Cactus在进行测试时的运作流程: 您会继承XXXTestCase来撰写您的测试案例,例如为Servlet作测试时,您会继承ServletTestCase,在当中您可以定义 beginXXX()、setUp()、testXXX()、tearDown()、endXXX()等方法。 1. 当一个单元测试开始时,TestRunner会产生TestCase实例,执行beginXXX()方法,在这个方法中您可以准备一些HTTP相关的参数,例如加入使用者名称、密码等参数。 2. TestRunner使用HTTP与伺服器上的Redirector Proxy进行沟通,Redirector Proxy会接收请求并产生相关的物件,像是HttpServletRequest、HttpServletResponse等等,并将这些物件保留下来。 3. Redirector Proxy会再产生TestCase实例,并开始执行上面的setUp()、testXXX()、tearDown()等方法,这部份与单纯的JUnit 是相同的,而不同的是,之前Redirector Proxy所保留的HttpServletRequest、HttpServletResponse等等可以在这个时候使用了。 4. HttpServletRequest、HttpServle

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档