4.4 单元测试junit提高.ppt

  1. 1、本文档共52页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
何时使用Mock Object * 何时使用Mock Object 1、真实对象没有确定的行为 2、真实对象难以配置 3、真实对象的一些行为难以控制其发生 4、真实对象运行较慢 5、真实对象具有用户界面 6、真实对象实际上并不存在(当需要和其他开发小组,或者新的硬件系统打交道的时候,这是一个普遍的问题) 如何实现Mock对象 * 使用mock对象进行测试的时候,我们总共需要3个步骤,分别是: 使用一个接口来描述这个对象 为产品代码实现这个接口 以测试为目的,在mock对象中实现这个接口 Easy Mock * 自己编写Mock还是比较麻烦的,目前有一些开源组织,专门编写常用的Mock Object, 主要是用来模拟那些在应用中不容易构造 (如HttpServletRequest必须在Servlet容器中才能构造出来) 或者比较复杂的对象 (如JDBC中的ResultSet对象) 从而使测试顺利进行。 Easy Mock测试servlet * 现有一个servlet:SampleServlet,里面有一个验证函数 isAuthenticated, 详见Container项目 SampleServlet.java 下面用mock object模拟HttpServletRequest类 Mock object优缺点 * 1、执行测试不需要运行的容器 2、测试速度快 3、没有测试容器和组件进行交互 4、没有测试组件的部署部分 5、需要熟悉被调用的API,这样才能模拟它,这个要求太高了 6、无法让你确信代码会在目标容器中运行 Cactus * Cactus是Apache出品,一个测试服务器端代码的Junit扩展测试框架,可以对运行于服务器内的组件进行测试,包括Servlet,JSP,Filter,EJB等。 通过JUnit运行Cactus测试时,Cactus首先将单元测试部署到服务器端,然后在服务器内部运行TestCase,因此,测试代码将完全在真实的服务器环境下运行。此外,有许多第三方测试框架都提供了对Cactus的集成。 Cactus * Cactus实现了对JUnit测试框架的无缝扩展,可以方便地测试服务端应用程序。Cactus可以在下面几种情况下使用: * 测试Servlet以及任何使用了像HttpServletRequest,HttpServletResponse,……这样的对象的代码。使用ServletTestCase。 * 测试Filter以及任何使用了像FilterConfig,……这样的对象的代码。使用FilterTestCase。 * 测试JSP 。使用ServletTestCase或JspTestCase。 * 测试Taglibs以及任何使用了像PageContext,……这样的对象的代码。使用JspTestCase。 * 测试EJB。ServletTestCase或JspTestCase或FilterTestCase。 Cactus测试servlet * 详见container项目的TestSampleServletIntegration.java 讨论: cactus测试servlet和用mock object测试servlet有什么不同?? Cactus/jetty集成进行测试 * 详见TestSampleServletIntegration.java 讨论: cactus测试servlet和用mock object测试servlet有什么不同?? Cactus/jetty集成进行测试 * import org.apache.cactus.extension.jetty.JettyTestSetup; import junit.framework.Test; import junit.framework.TestSuite; public class TestAllWithJetty { public static Test suite() { System.setProperty(cactus.contextURL, http://localhost:8080/test); TestSuite suite = new TestSuite(All tests with Jetty); suite.addTestSuite(TestSampleServletIntegration.class); return new JettyTe

文档评论(0)

yan666888 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档