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

淘城汇网站谁做的安卓软件开发培训机构

淘城汇网站谁做的,安卓软件开发培训机构,全网营销案例,最好的免费的黄页网站matchers依赖介绍 上一次 #xff0c;我讨论了Hamcrest Matcher是什么#xff0c;如何使用以及如何制作。 在本文中#xff0c;我将解释创建Hamcrest Matchers的更多高级步骤。 首先#xff0c;我将分享如何使您的匹配器更易于类型安全#xff0c;然后介绍无状态匹配器的一… matchers依赖 介绍 上一次 我讨论了Hamcrest Matcher是什么如何使用以及如何制作。 在本文中我将解释创建Hamcrest Matchers的更多高级步骤。 首先我将分享如何使您的匹配器更易于类型安全然后介绍无状态匹配器的一些技术最后是如何减少测试类的大量静态导入。 我还将给出一些有关命名静态工厂方法的快速提示。 类型安全匹配器 您可能已经在上次开发的matchs方法中注意到了我在注释中指出我曾使用“ yoda条件”来避免null检查和类型检查。 首先自己对yoda条件进行一些研究不会有什么坏处我可能有一天会发表一篇有关它的文章但不能保证但是这里要注意的最大事情是某种类型检查和需要空检查。 这是因为matchs方法接受一个对象而不是泛型参数中指定的类型。 如Hamcrest的文档中所述 此方法与Object匹配而不是与通用类型T匹配。这是因为Matcher的调用者在运行时不知道类型是什么由于Java通用类型已擦除类型。 因此我们需要确定传入的对象的类型。此外我们还应确保没有传入任何空值除非我们的特定Matcher可以这样做但这非常罕见或者在至少要确保传入的null不会导致NullPointerException。 但是有一种更简单的方法TypeSafeMatcher。 如果扩展该类而不是BaseMatcher类它将为您执行类型检查和null检查然后将对象传递给仅采用泛型指定类型的匹配方法。 定义TypeSafeMatcher非常类似于我们上次定义Matcher的方式但有一些区别除了覆盖matchs之外您还可以替代使用通用类型而不是Object的matchesSafely。 而不是覆盖describeMismatch而是覆盖describeMismatchSafely。 可能没有一个新的describeTo可能令人惊讶但是看到它除了Description之外没有其他内容因此不需要类型安全的版本。 否则创建TypeSafeMatcher几乎是相同的。 不过我不得不提我上周忘记的事情。 定义自己的Matcher的人不需要重写describeMismatch或describeMismatchSafely方法。 BaseMatcher和TypeSafeMatcher都具有那些方法的默认实现这些方法的简单实现是仅输出“ was item.toString ”如果TypeSafeMatcher获得错误类型的项则“ was of itemClassName item.toString” ”。 这些默认实现通常足够好但是如果要使用的类型没有toString的有用实现则使用您自己的不匹配消息来描述该项目的问题显然更有用。 即使类具有不错的toString实现我也总是这样做因为它可以更快地解决问题。 有关其他可扩展匹配器类的说明 Hamcrest核心库中还有其他几个Matcher类供用户从中扩展。 这些有几种口味。 首先是CustomMatcher和CustomTypeSafeMatcher。 这些设计用于通过匿名类一次性创建Matchers。 他们可能是有用的但我更愿意总是在情况下正确执行我曾经确实需要它一次。 接下来有DiagnosingMatcher和TypeSafeDiagnosingMatcher它们使您可以在match方法中创建不匹配描述。 这似乎是用一块石头杀死两只鸟的好方法但是我有几块牛肉1它违反了SRP 2如果存在不匹配它再次调用matchs方法只是为了填充在不匹配说明中。 因此第一个调用忽略获取描述第二个调用忽略匹配。 您可以扩展的最后一个特殊的Matcher是FeatureMatcher。 这可能非常有用但要理解起来很复杂我不确定自己是否正确理解–直到我尝试自己动手做一个或阅读如何做一个为止。 如果我弄清楚并获得了很好的理解我将在这里为您写另一篇文章。 无状态匹配器 任何不需要将任何内容传递给其构造函数的Matcher因此它是静态工厂方法都是无状态Matcher。 它们与其他Matcher相比有一个很小的优势因为您只需要在任何时候存在一个实例就可以在需要使用该Matcher的任何时间重用它。 这是一个非常简单的补充。 您需要做的就是创建该类的静态实例并使您的静态工厂返回该实例而不是调用构造函数。 库实际附带的IsEmptyString Matcher可以做到这一点上一次我们的示例没有这样做但是为了简单起见。 减少静态进口数量 用Hamcrest Matchers编写了相当多的测试后您可能会注意到文件顶部有很多静态导入。 一段时间后这可能会成为很大的麻烦事所以让我们看一下可以减轻此问题的方法。 实际上这几乎与上一个解决方案一样简单。 您可以通过创建实质上为您执行此操作的新类来减少静态导入。 这个新类具有烦人的静态导入但随后定义了自己的静态工厂方法来委托给原始对象。 这是将一些核心Matchers组合到一个地方的示例 import org.hamcrest.core.IsEqual; import org.hamcrest.core.IsNull; import org.hamcrest.core.IsSame; import org.hamcrest.Matcher;public class CoreMatchers {public static Matcher equalTo(T object) {return IsEqual.equalTo(object);}public static Matcher notNullValue() {return IsNull.notNullValue();}public static Matcher notNullValue(Class type) {return IsNull.notNullValue(type);}public static Matcher nullValue() {return IsNull.nullValue();}public static Matcher nullValue(Class type) {return IsNull.nullValue(type);}public static Matcher sameInstance(T target) {return IsSame.sameInstance(target);}public static Matcher theInstance(T target) {return IsSame.theInstance(target);} } 然后要使用任何或所有Matcher只需静态导入CoreMatchers。*还有一种生成这些组合Matcher类的方法如官方Hamcrest教程所示 。 我不会继续讨论它因为它不在本文讨论范围之内而且我也不喜欢它。 结束提示命名 如果您阅读了官方的Hamcrest教程和/或查看了内置的Matchers您可能会注意到静态工厂方法的命名趋势。 通用语法匹配“断言testObject是factoryMethod ”。 方法名称的语法通常设计为可以在“ is”之前使用的当前时态动作。在命名自己的静态工厂方法时通常应遵循此约定但实际上我建议将“ is”放入名称中已经。 这样Matcher的用户无需将您的方法嵌套在is方法内。 但是如果执行此操作则还需要创建反函数。 允许使用is方法包装Matcher的原因是因此您也可以将其包装在not方法中以测试已经测试的内容的逆函数。 这将导致类似“断言testObject不是factoryMethod ”的句子。如果您认为遵循约定对特定的Matcher过于严格则只需确保使用当前的时态操作测试即可。 例如我做了一个匹配器检查是否抛出了一个异常该异常的静态工厂方法是throwsA。 我只是不喜欢将它命名为throwingA以便与“ is”一起使用。 但是如果再次违反约定则必须确定要创建一个静态静态工厂方法。 例如如果您要实现自己的逆工厂最简单的方法通常是用not包装正工厂。 因此我的nottThrowA方法将返回notthrowsA。 不过要小心有时候将正负误转实际上并不能给出您想要的正确逆。 奥托罗 好吧这就是我为您准备的。 如果您想让我继续谈论Hamcrest Matchers请在评论中告诉我。 否则您可以在其github页面上的Hamcrest Matchers上进行自己的研究。下周我将讨论如何让您的Hamcrest Matchers以类似于AssertJ断言的流畅方式检查多个事情。 翻译自: https://www.javacodegeeks.com/2015/01/advanced-creation-of-hamcrest-matchers.htmlmatchers依赖
http://www.lebaoying.cn/news/37774.html

相关文章:

  • 手机网页设计制作网站seo权重查询
  • 网络营销之网站建设制作网页的详细步骤
  • 如何给网站添加外链网站后台注入
  • 网站cms模板娄底网站建设企业
  • 金湖有哪里做网站的做软件项目的网站
  • 网站建设发展方向有哪些wordpress 相册
  • 宜昌住房与城乡建设部网站网站开发数据库课程设计
  • 国外网站推广平台有哪些公司如何自己建网站企业网站
  • 门户网站的优缺点一支部一品牌一特色方案
  • 做 专而精 的网站西地那非片的功效是多长时间
  • 小公司网站建设wordpress搬家插件
  • 建设手机版网站做外贸如何建立网站
  • 网站建设接单技巧网站怎么做seo收录
  • 温州做网站制作房产网站怎么推广
  • 重庆大学建设管理与房地产学院网站wordpress插件没有效果
  • nas可以做网站超级外链工具
  • 太原的网站搭建公司APP加网站建设预算多少钱
  • 淘宝客网站开发平台三星网站建设内容
  • wordpress 用户 注册页面模板台州做网站优化哪家好
  • 电子商务网站开发与应用论文今天最新生猪价格
  • 口碑好网站建设公司电话高校网站群建设方案
  • 速贝cms建站系统wordpress移动端菜单
  • 音酷网站建设郑州做网站茂睿科技
  • 外贸网站电子建设购物网站开发英文文献
  • 电商网站开发平台哪个好设置WordPress文章图片
  • 网站制作流程视频教程重庆忠县网站建设公司哪家专业
  • 打造一个网站需要多少钱seo网站营销推广全程实例 pdf
  • wordpress demo iframe常州seo
  • 域名有了怎么建设网站如何给网站写文章
  • 福州响应式网站网站代运营合同模板