开式蓄冷罐与闭式蓄冷罐_一罐将其全部统治:Arquillian + Java 8
开式蓄冷罐与闭式蓄冷罐
借助Java 8 ,已实现了许多新的语言改进,以简化开发人员的生活。 在我看来, Java 8的最大优点之一是,在某些情况下,已开发的代码看起来比使用以前的方法更漂亮,我指的是Lambdas和Method引用。 这篇文章不是要学习这些Java 8功能,而是如何在Arquillian框架中应用它们。
我已经检测到四个用例,其中可以在Arquillian中使用方法引用和lambda。 在这里您可以看到它们,当然,如果您找到其他任何一个,请随时与我们分享。
要使用Arquillian编写测试,您需要以编程方式(jar,war或ear)创建部署文件。 这是使用Shrinkwrap完成的。 部署文件有时会要求您在其上添加一些外部依赖项。 典型的示例是在创建WebArchive时 ,需要向WEB-INF / lib中添加一些依赖项。 在这种情况下,这很容易,因为WebArchive类具有一个名为addAsLibraries的方法,该方法基本上将给定的jar添加到库路径中。
但是,当您的部署文件是jar文件时,会发生什么情况? 然后,您需要使用merge方法合并 JavaArchive对象内的每个库。
private static JavaArchive mergeHibernate(JavaArchive javaArchive) {JavaArchive[] javaArchives = Maven.resolver().resolve("org.hibernate:hibernate-entitymanager:4.2.15.Final").withTransitivity().as(JavaArchive.class);for(JavaArchive hibernateDep: javaArchives) {javaArchive.merge(hibernateDep);}return javaArchive;
}
这是一种方法,但是对于Java 8 ,可以使用foreach函数和方法引用 。
private static JavaArchive mergeHibernate(JavaArchive javaArchive) {JavaArchive[] javaArchives = Maven.resolver().resolve("org.hibernate:hibernate-entitymanager:4.2.15.Final").withTransitivity().as(JavaArchive.class);Arrays.stream(javaArchives).forEach(javaArchive::merge);return javaArchive;
}
请注意,我们正在将Array转换为流,因此我们可以调用foreach函数。 在ShrinkWrap Resolver的 2.2.0版本中,您将能够以List的形式获取依赖项,因此无需进行任何转换就可以获取流。 下一个重点是我们正在使用方法引用功能来合并所有依赖项。 现在只需一行我们就可以合并所有依赖项。
Arquillian使用ShrinkWrap创建部署文件并在其中添加资源。 通过使用API提供的任何方法(如add , addClass , addAsManifestReource等) 添加这些资源。 这些方法可以接收Asset作为第一个参数。 Asset是一个仅包含一个称为openStream的方法的接口,该方法返回InputStream 。 资产用于设置将添加到部署文件内部的文件的内容。
例如:
archive.add(new StringAsset("My txt file"), "hello.txt");
ShrinkWrap带有一些已定义的资产,例如Url,String,Byte,Class等,但是有时您可能需要实现自己的Asset。
ShrinkWrap.create(JavaArchive.class).addAsManifestResource( new Asset() {public InputStream openStream() {return new CheckedInputStream(urlInputStream, crc32)}}, "persistence.xml");
在这种情况下,我们使用的是内部类,但是由于Asset类可以被视为功能接口(仅是一种抽象方法),因此可以使用Lambda来避免使用内部类。
非常简单,可读性强。
如果您使用Arquillian Drone或Arquillian Graphene,将使用一些WebDriver Selenium类来获取网页元素。 有时您需要验证HTML表格的列和HTML表格,在这种情况下,您可以通过在列和行上迭代很多样板代码来验证包含正确值的最终结果。
Java 8之前的代码如下所示:
List<WebElement> elements = session.findElements(xpath("//table/tbody/tr/td/span[@class='title']"));List<String> columnValues = new ArrayList<String>();
for(WebElement webElement : elements) {columnValues.add(webElement.getText());
}return columnValues;
但是在Java 8中 ,通过添加流 API,代码变得更加容易和易读:
List<WebElement> elements = session.findElements(xpath("//table/tbody/tr/td/span[@class='title']"));
return elements.stream().map(WebElement::getText).collect(Collectors.toList());
如您所见,代码非常紧凑。 我们在这里首先要做的是获取列标题的所有Web元素,这里没有新闻。 但是随后流式 API开始发挥作用。 首先,我们通过调用stream方法从列表创建流 。 然后,我们正在从列表中存在的所有WebElement中调用方法getText 。 最后,返回实际上是列标题所有行的内容列表的字符串列表。
请注意,在这种情况下,该代码比以前的代码更具可读性,更重要的是,您甚至可以创建并行流来获得多核处理器的所有功能。
如您所见, Java 8不仅可以用于业务代码中,还可以用于测试中。
翻译自: https://www.javacodegeeks.com/2014/12/one-jar-to-rule-them-all-arquillian-java-8.html
开式蓄冷罐与闭式蓄冷罐
开式蓄冷罐与闭式蓄冷罐_一罐将其全部统治:Arquillian + Java 8相关推荐
- 开式蓄冷罐与闭式蓄冷罐_一罐来统治所有人
开式蓄冷罐与闭式蓄冷罐 跳下内存通道 早在1998年,当我是一名C / C ++开发人员时,尝试使用Java时,有关该语言的一些内容对我来说就显得有些恼火了. 我记得很担心这些 为什么没有合适的编辑器 ...
- 数据中心蓄冷罐的开式与闭式的选择-孙长青
设计规划部总工 孙长青 现代数据中心网 在Uptime Tier等级标准中,Tier IV(容错的现场基础设施)标准明确规定了连续制冷的要求,一般通过设置蓄冷罐来实现.当然,连续制冷也可以通过冷源系统 ...
- 联合循环——18(开式水和闭式水系统)
一.开式水系统 水在工业冷却系统中的重要作用: Due to the fact that water is environmentally safe, abundant, easy to handle ...
- 闭式解(解析解)与 开式解(数值解)
在解组件特性相关的方程式时,大多数的时候都要去解偏微分或积分式,才能求得其正确的解.依照求解方法的不同,可以分成以下两类:解析解和数值解. 解析解(analytical solution)就是一些严格 ...
- 闭式系统蒸汽管径推荐速度_闭式蒸汽供热系统
LOGO 供热工程 GONG RE GONG CHENG 集中供热系统 目录 1 课题1 集中供热系统方案的确定 课题2 热水供热系统 课题3 蒸汽供热系统 2 3 课题1 集中供热系统方案的.... ...
- 闭式系统蒸汽管径推荐速度_空调水系统设计、空调风系统设计要点
空调水系统设计.空调风系统设计要点 一.空调水系统流速的确定 一般,当管径在DN100到DN250之间时,流速推荐值为1.5m/s左右,当管径小于DN100时,推荐流速应小于1.0m/s,管径大于DN ...
- 闭式系统蒸汽管径推荐速度_暖通丨空调水系统的设计
一 空调水系统流速的确定 一般,当管径在DN100到DN250之间时,流速推荐值为1.5m/s左右,当管径小于DN100时,推荐流速应小于1.0m/s,管径大于DN250时,流速可再加大.进行计算是应 ...
- matlab闭式网络潮流计算,闭式网络潮流计算.ppt
1.复习:简述开式网络潮流计算的特点和步骤引入:开式网络是电力系统中最简单的形式,为了提高供电可靠性,系统中大多数的电源与负荷通过线路连成环状,或经多个电源向负荷供电-- ; 一.什么是闭式网络:凡是 ...
- 冷却水的循环方式有哪几种_VOCs2.0 | 闭式循环水系统,减少VOCs逸散的有效设施...
闭式循环水系统, 减少VOCs逸散的有效设施 上海VOCs2.0治理任务表将"采用密闭式循环冷却水系统"作为石化.化工类企业过程控制废水环节的"推荐"项 ...
最新文章
- 微信小程序开通腾讯云开发实践流程附详细图解
- 什么是java前端绑定事件_java复习前端篇——JavaScript
- C++编程-预定义宏
- 合并石子 区间dp水题
- [转载]Validation of viewstate MAC failed异常的原因及解决方法
- 全球排名前50网站使用的开发语言及系统平台
- paip.TechExcel DevSuite IIS 应用配置
- 查看npy文件中存的是什么
- 《用户体验要素——以用户为中心的产品设计》读书笔记
- ps抠图都有哪些方面,有哪些相关教程呢
- 使用torchvision 中的roi_pool/roi_align函数时报错
- html后代选择器的语法,[转]CSS子选择器与后代选择器
- opencv 视频处理(python)
- Mybatis 解决数据库字段名和实体类属性名不一致问题
- 墙面有几种装修方法_墙面怎么装?四种装修方式总有一款适合你
- 输出小数点后第n位数字
- n维欧氏空间里的基本概念和符号
- iptables白名单
- 【VS】InstallerProjects.vsix下载 Microsoft Visual Studio Installer Projects
- [转载]利用Web Services实现软件自动升级