当前位置: 首页 > news >正文

网站建站 在线制作网站建设与管理的书

网站建站 在线制作,网站建设与管理的书,上海万网网站建设,网页设计表单代码模板存根类 测试代码 java我的上一个博客是有关测试代码的方法以及讨论您做什么和不必进行测试的方法的一系列博客中的第三篇。 它基于我使用一种非常常见的模式从数据库检索地址的简单方案#xff1a; …并且我提出了这样的想法#xff0c;即任何不包含任何逻辑的类实际上都不需… 存根类 测试代码 java 我的上一个博客是有关测试代码的方法以及讨论您做什么和不必进行测试的方法的一系列博客中的第三篇。 它基于我使用一种非常常见的模式从数据库检索地址的简单方案 …并且我提出了这样的想法即任何不包含任何逻辑的类实际上都不需要单元测试。 在其中我包括了我的数据访问对象DAO它更喜欢对此类进行集成测试以确保其与数据库协同工作。 今天的博客涵盖编写常规或经典的单元测试该测试使用存根对象强制实现测试主题隔离。 我们将要测试的代码再次是AddressService Component public class AddressService {private static final Logger logger LoggerFactory.getLogger(AddressService.class);private AddressDao addressDao;/*** Given an id, retrieve an address. Apply phony business rules.* * param id* The id of the address object.*/public Address findAddress(int id) {logger.info(In Address Service with id: id);Address address addressDao.findAddress(id);address businessMethod(address);logger.info(Leaving Address Service with id: id);return address;}private Address businessMethod(Address address) {logger.info(in business method);// Apply the Special Case Pattern (See MartinFowler.com)if (isNull(address)) {address Address.INVALID_ADDRESS;}// Do some jiggery-pokery here....return address;}private boolean isNull(Object obj) {return obj null;}AutowiredQualifier(addressDao)void setAddressDao(AddressDao addressDao) {this.addressDao addressDao;} } 迈克尔·费瑟Michael Feather的书《有效地使用旧版代码》指出在以下情况下测试不是单元测试 它与数据库对话。 它通过网络进行通信。 它涉及文件系统。 您必须对环境做一些特殊的事情例如编辑配置文件才能运行它。 为了遵守这些规则您需要将被测对象与系统的其余部分隔离开来这就是存根对象的所在。存根对象是注入到您的对象中的对象用于在测试情况下替换实际对象。 马丁·福勒Martin Fowler在他的论文《 莫克斯不是存根》中将存根定义为 “存根提供对测试过程中进行的呼叫的固定答复通常根本不响应为测试编程的内容之外的任何内容。 存根还可以记录有关呼叫的信息例如电子邮件网关存根它可以记住“已发送”的消息或者仅记住“已发送”的消息数量。” 用一个单词来描述存根非常困难我可以选择虚拟或伪造但是有些替换对象称为假人或伪造也由Martin Fowler描述 虚拟对象会传递但从未实际使用过。 通常它们仅用于填充参数列表。 伪对象实际上具有有效的实现但是通常采取一些捷径这使它们不适合生产内存数据库就是一个很好的例子。 但是我看到过其他术语“伪造对象”的定义例如Roy Osherove在《 The Art Of Unit Testing》一书中将伪造对象定义为 伪造品是一个通用术语可用于描述存根或模拟对象……因为两者看起来都像真实对象。 …因此我和其他许多人一样倾向于将所有替换对象称为模拟或存根因为两者之间存在差异但稍后会更多。 在测试AddressService时 我们需要用存根数据访问对象替换实际的数据访问对象在这种情况下它看起来像这样 public class StubAddressDao implements AddressDao {private final Address address;public StubAddressDao(Address address) {this.address address;}/*** see com.captaindebug.address.AddressDao#findAddress(int)*/Overridepublic Address findAddress(int id) {return address;} } 注意存根代码的简单性。 它应该易于阅读可维护并且不包含任何逻辑并且需要自己进行单元测试。 编写存根代码后接下来进行单元测试 public class ClassicAddressServiceWithStubTest {private AddressService instance;Beforepublic void setUp() throws Exception {/* Create the object to test *//* Setup data thats used by ALL tests in this class */instance new AddressService();}/*** Test method for* {link com.captaindebug.address.AddressService#findAddress(int)}.*/Testpublic void testFindAddressWithStub() {/* Setup the test data - stuff thats specific to this test */Address expectedAddress new Address(1, 15 My Street, My Town,POSTCODE, My Country);instance.setAddressDao(new StubAddressDao(expectedAddress));/* Run the test */Address result instance.findAddress(1);/* Assert the results */assertEquals(expectedAddress.getId(), result.getId());assertEquals(expectedAddress.getStreet(), result.getStreet());assertEquals(expectedAddress.getTown(), result.getTown());assertEquals(expectedAddress.getPostCode(), result.getPostCode());assertEquals(expectedAddress.getCountry(), result.getCountry());}Afterpublic void tearDown() {/** Clear up to ensure all tests in the class are isolated from each* other.*/} } 请注意在编写单元测试时我们的目标是清晰。 通常会犯一个错误就是认为测试代码不如生产代码从而导致测试代码更加混乱且难以辨认。 单元测试的艺术中的 Roy Osherove提出了这样的想法即测试代码应比生产代码更具可读性。 明确的测试应遵循以下基本的线性步骤 创建被测对象。 在上面的代码中这是在setUp方法中完成的因为我对所有一个测试都使用了相同的被测对象。 设置测试。 这是在测试方法testFindAddressWithStub中完成的因为测试中使用的数据特定于该测试。 运行测试 撕毁测试。 这样可以确保测试相互隔离并且可以按任何顺序运行。 使用简单的存根会产生将AddressService与外界隔离和快速运行测试的两个好处。 这种测试有多脆 如果您的要求改变了那么测试和存根就会改变–毕竟不是那么脆弱吗 作为比较我的下一个博客使用EasyMock重写了该测试。 参考来自Captain Debug博客的 JCG合作伙伴 Roger Hughes的 常规单元测试和存根-测试技术4 相关文章 测试技巧–不编写测试 端到端测试的滥用–测试技术2 您应该对什么进行单元测试 –测试技术3 使用模拟的单元测试–测试技术5 为旧版代码创建存根-测试技术6 有关为旧版代码创建存根的更多信息–测试技术7 为什么要编写单元测试-测试技巧8 一些定义–测试技术9 使用FindBugs产生更少的错误代码 在云中开发和测试 翻译自: https://www.javacodegeeks.com/2011/11/regular-unit-tests-and-stubs-testing.html存根类 测试代码 java
http://www.sadfv.cn/news/203141/

相关文章:

  • 杭州做企业网站的公司做爰小视频网站
  • 哈尔滨大型网站建设贴吧网站怎么做
  • 做一个免费网站的流程汽车网站建设参考文献开题报告
  • 做美工用的网站网站公共模板是什么意思
  • 深圳定制网站建设服务公司网站和app可以做充值余额功能
  • 去视频网站做编辑网站建设公司好做吗
  • 购物帮 做特惠的导购网站无锡网络营销推广软件
  • 珠海做网站制作关键词网站推广
  • 网站开发合同适用印花税wordpress自定义文章类型模板
  • 温州网站关键词推广做亚马逊网站一般发什么快递
  • 广安市国土资源局网站建设银行系统网站模板
  • 网站开发 之cookie一个企业做网站的意义
  • 青海建设工程信息网站网易企业邮箱登录入口网页版
  • 做seo营销网站wordpress jae
  • 济南网站建设 选聚搜网络网络营销产品的概念举例
  • 做网站哪些公司娄底网站推广
  • 汉中市建设工程质量安全监督站官网江西省上饶市建设局网站
  • 郑州东站附近网站建设公司明年房价走势最新消息
  • 高端网站建设免费分析erp软件多少钱一套
  • 网站源码 带后台百度站长平台诊断
  • 北京网站建设手机app电子商务类似淘宝网站建设费用
  • 做rap的网站高端网站建设要到磐石网络
  • 百度竞价 十一 pc网站 手机网站网页设计公司招聘
  • 晋城网络公司做网站的域名服务商网站
  • 做淘宝客最好的网站是什么网站小程序登录注册
  • 查学校去哪个网站百度站点提交工具
  • 网站正在建设中单页河北网站开发联系电话
  • 做电影网站怎么拿到版权网站怎么重装wordpress
  • 秦皇岛网站制作与网站建设公司ftp里找到的index文件查看网站建设中
  • 公司网站备案材料什么是sem营销