开式蓄冷罐与闭式蓄冷罐_一罐将其全部统治:Arquillian + Java 8

开式蓄冷罐与闭式蓄冷罐

arquillian_ui_success_256px 借助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​​提供的任何方法(如addaddClassaddAsManifestReource等) 添加这些资源。 这些方法可以接收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

开式蓄冷罐与闭式蓄冷罐

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/338580.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C 预处理指令

C 预处理指令C语言、C 语言的预处理器。用于在编译器处理程序之前预扫描源代码&#xff0c;完成头文件的包含, 宏扩展, 条件编译, 行控制&#xff08;line control&#xff09;等操作编译的四个阶段C语言标准规定&#xff0c;预处理是指前4个编译阶段&#xff08;phases of tra…

将html代码转换为dom,将HTML字符转换为DOM节点并动态添加到文档中

将HTML字符转换为DOM节点并动态添加到文档中将字符串动态转换为DOM节点&#xff0c;在开发中经常遇到&#xff0c;尤其在模板引擎中更是不可或缺的技术。字符串转换为DOM节点本身并不难&#xff0c;本篇文章主要涉及两个主题&#xff1a;1 字符串转换为HTML DOM节点的基本方法及…

python 的csr_python的高级数组之稀疏矩阵

稀疏矩阵的定义&#xff1a;具有少量非零项的矩阵(在矩阵中&#xff0c;若数值0的元素数目远多于非0元素的数目&#xff0c;并且非0元素分布没有规律时&#xff0c;)则称该矩阵为稀疏矩阵&#xff1b;相反&#xff0c;为稠密矩阵。非零元素的总数比上矩阵所有元素的总数为矩阵的…

通过Spring集成进行消息处理

Spring Integration提供了Spring框架的扩展&#xff0c;以支持著名的企业集成模式。 它在基于Spring的应用程序中启用轻量级消息传递&#xff0c;并支持与外部系统的集成。 Spring Integration的最重要目标之一是为构建可维护且可测试的企业集成解决方案提供一个简单的模型。 …

鸿蒙系统多会发布,华为官宣鸿蒙系统将发布,还将发布多款新品

华为今日官宣&#xff0c;6月2日20&#xff1a;00&#xff0c;将举行鸿蒙操作系统及华为全场景新品发布会。【1、鸿蒙OS2.0】本次发布会的重点将是推出华为今年的重点战略产品——鸿蒙系统。届时鸿蒙OS2.0正式版将陆续推送给手机用户。5月中旬时华为就先行推送了一波鸿蒙OS开发…

C语言结构体字节对齐

默认字节对齐C语言结构体字节对齐是老生常谈的问题了&#xff0c;也是高频面试题&#xff0c;现在我们来深入研究这个问题&#xff0c;彻底弄懂到底是怎么回事&#xff0c;给你一个结构体定义和平台机器位数就能手动计算出结构体占用字节数&#xff0c;现在我们不使用宏#pragma…

shell shocked伴奏版_Shell Shocked

【游戏简介】Shell Shocked是一款全新卡牌对战题材的策略类手机游戏。游戏有着丰富的卡牌种类&#xff0c;极具策略性的玩法。游戏中玩家可以将进行真人游戏对战&#xff0c;随机抽取卡牌对战。玩家必须采取适合的策略&#xff0c;才有可能赢取游戏。 游戏操作简单&#xff0c;…

meetup_使用RxNetty访问Meetup的流API

meetup本文将涉及多个主题&#xff1a;响应式编程&#xff0c;HTTP&#xff0c;解析JSON以及与社交API集成。 完全在一个用例中&#xff1a;我们将通过非夸张的RxNetty库实时加载和处理新的metup.com事件&#xff0c;结合Netty框架的强大功能和RxJava库的灵活性。 Meetup提供了…

html约束验证的例子,HTML5利用约束验证API来检查表单的输入数据的代码实例

HTML5对于表单有着极大程度的优化&#xff0c;无论是语义&#xff0c;小部件&#xff0c;还是数据格式的验证。我猜你肯定会以浏览器兼容作为借口不愿意使用这些“新功能”&#xff0c;但这绝不应该成为使你停滞不前的原因&#xff0c;况且还有像Modernizr和ployfill这样的工具…

C语言经典题(1)

输入某年某月某日&#xff0c;判断这一天是这一年的第几天&#xff1f;程序分析&#xff1a;以3月5日为例&#xff0c;应该先把前两个月的加起来&#xff0c;然后再加上5天即本年的第几天&#xff0c;特殊情况&#xff0c;闰年且输入月份大于3时需考虑多加一天#include int mai…

jpg图片使用pil的resize后_如何使用PIL调整图像大小并保持其纵横比?

是否有一种显而易见的方法可以解决这个问题&#xff1f; 我只是想制作缩略图。#1楼PIL已经可以选择裁剪图像img ImageOps.fit(img, size, Image.ANTIALIAS)#2楼我丑陋的例子。函数获取文件如&#xff1a;“pic [0-9a-z]。[extension]”&#xff0c;将它们调整为120x120&#x…

openshift_OpenShift上的Java EE工作流(技术提示#64)

openshift该网络研讨会展示了如何使用WildFly &#xff0c; JBoss Tools &#xff0c; Forge &#xff0c; Arquillian和OpenShift在OpenShift上创建Java EE工作流。 具体来说&#xff0c;它谈论&#xff1a; 如何使用JBoss Developer Studio轻松开发Java EE应用程序并将其直接…

C语言面试-指针和引用的使用场景?

先解决两个疑问◆ 指针和引用的不同之处是什么&#xff1f;◆ 何时用用指针&#xff1f;何时用引用&#xff1f;指针和引用的不同之处看如下代码&#xff1a;指针是用来表示内存地址的&#xff0c;而指针这个整数正是被指向的变量地址。而引用就是给变量重新起了一个名字&#…

排序算法html,排序算法总结.html

排序算法总结 | borens blog排序算法总结borens blog首页所有文章关于作者排序算法总结Apr 6, 2018| 技术人生| 阅读排序,顾名思义,将数据按照某种规则排列起来.这种规则可以是根据基本的数值大小排序,也可以是通过字符串长度比较来排序,又或者是优先根据两个字符串的第一个不…

win10商店下载位置_win10应用商店下载的东西在哪

win10应用商店下载的东西在哪&#xff1f;我们都知道&#xff0c;微软从win8开始&#xff0c;就推出了应用商店&#xff0c;到现在的win10&#xff0c;还是一样。现在的win10应用商店里的东西也越来越丰富了。但是有些win10新用户朋友们在win10应用商店下载了东西&#xff0c;准…

异步http 超时_具有CompletableFuture的异步超时

异步http 超时有一天&#xff0c;我重写了执行不佳的多线程代码&#xff0c;该代码在Future.get()某个时刻被阻塞&#xff1a; public void serve() throws InterruptedException, ExecutionException, TimeoutException {final Future<Response> responseFuture async…

C语言指针变量与一维数组

数组元素之间的地址是相连的&#xff1b;变量地址绝对不是相连的&#xff0c;如果找到规律那也只是一个偶然的&#xff0c;不是必然的&#xff1b;1. 指针变量和一位数组下面对指针数组进行分析&#xff0c;index(小标是从0开始)&#xff0c;array数组是int类型&#xff0c;每一…

天干地支计算公式_高大上:天干地支计算方法

天干地支是我国古代计算年月日的重要依据&#xff0c;作为现代人的我们&#xff0c;有必要去了解一下&#xff0c;他们&#xff0c;以备不时之需。首先介绍一下&#xff0c;天干和地支。共有十天干和十二地支。十天干&#xff1a;甲(jiǎ)、乙(yǐ)、丙(bǐng)、丁(dīng)、戊(…

input发送a.jax_JAX-RS 2.0:服务器端处理管道

input发送a.jax这篇文章的灵感来自JAX-RS 2.0规范文档 &#xff08;附录C&#xff09;中的Processing Pipeline部分。 我喜欢它的原因在于它提供了JAX-RS中所有模块的漂亮快照-以准备好吞咽的胶囊形式&#xff01; 礼貌– JAX-RS 2.0规范文档 因此&#xff0c;我想到了使用此…

html 登录失败,qq音乐登录失败 QQ音乐总是显示登录失败是怎么回事

urlproc.exe是什么进程?没见过&#xff0c;请前辈们指点&#xff1f;造成QQ音乐登录不上现象的原因有如下三种可能&#xff1a; 一、木马病毒对QQ音乐的必要组件或文件进行破坏&#xff0c;导致QQ音乐登录失败&#xff0c;登陆不上的情况发生。 二、Windows系统防火墙(或其他安…