做网站后期费用,网址导航模板,我国企业网站的建设情况,淮安哪有专业做网站的公司开式蓄冷罐与闭式蓄冷罐借助Java 8 #xff0c;已实现了许多新的语言改进#xff0c;以简化开发人员的生活。 在我看来#xff0c; Java 8的最大优点之一是#xff0c;在某些情况下#xff0c;已开发的代码看起来比使用以前的方法更漂亮#xff0c;我指的是Lambdas和Meth… 开式蓄冷罐与闭式蓄冷罐 借助Java 8 已实现了许多新的语言改进以简化开发人员的生活。 在我看来 Java 8的最大优点之一是在某些情况下已开发的代码看起来比使用以前的方法更漂亮我指的是Lambdas和Method引用。 这篇文章不是要学习这些Java 8功能而是如何在Arquillian框架中应用它们。 我已经检测到四个用例其中可以在Arquillian中使用方法引用和lambda。 在这里您可以看到它们当然如果您找到其他任何一个请随时与我们分享。 要使用Arquillian编写测试您需要以编程方式jarwar或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带有一些已定义的资产例如UrlStringByteClass等但是有时您可能需要实现自己的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之前的代码如下所示 ListWebElement elements session.findElements(xpath(//table/tbody/tr/td/span[classtitle]));ListString columnValues new ArrayListString();
for(WebElement webElement : elements) {columnValues.add(webElement.getText());
}return columnValues; 但是在Java 8中 通过添加流 API代码变得更加容易和易读 ListWebElement elements session.findElements(xpath(//table/tbody/tr/td/span[classtitle]));
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开式蓄冷罐与闭式蓄冷罐