使用Forge,WildFly Swarm和Arquillian开发微服务

在本文中,我们将看到如何使用WildFly Swarm和Forge开发微服务,以及如何使用Arquillian和Rest Assured对其进行测试。
WildFly Swarm提供了一种创新的方法来打包和运行Java EE应用程序,方法是将它们与足够的服务器运行时一起打包以“ java -jar”您的应用程序。

JBoss Forge是一个软件开发工具,可扩展您的Java IDE,并提供用于不同技术和解决方案的向导和扩展(附加组件)。

Arquillian是一个简化Java中间件集成测试的平台。 它处理了容器管理,部署和框架初始化的所有工作,因此您可以专注于编写测试(实际测试)的任务。

REST Assured将动态语言(例如Ruby和Groovy)中的REST服务的测试和验证的简便性带入了Java域。

http://downloads.jboss.org/forge/releases/3.4.0.Final/forge-distribution-3.4.0.Final-offline.zip或导航至http://forge.jboss.org/download并下载Eclipse,Netbeans或IntelliJ的插件。 对于此示例,我将使用CLI之一。
安装Forge并在PATH环境变量中提供它之后,就可以开始使用它了。

首先,转到要存储项目的目录并运行forge。 几秒钟后,您将看到Forge已启动,并且可以键入命令了:


之后,您需要安装wildfly-swarm插件 。 为此,只需在Forge shell上键入next命令:

> addon-install-from-git --url https://github.com/forge/wildfly-swarm-addon

然后将下载并安装最新的插件。 完成此设置步骤后,您可以通过调用以下命令开始创建微服务:

> project-new --top-level-package org.superbiz --named foo --type wildfly-swarm

此命令创建一个名为foo的新项目,其中准备了满足所有wildfly swarm要求的pom.xml 。 下一步是添加野生群片段。 片段是一种定义您希望在运行时能够使用的模块的方法。

> wildfly-swarm-add-fraction --fractions microprofile

在这种情况下,添加微轮廓部分。 这意味着在运行时CDI + JSON-P + JAXRS将可用.Addon还创建了一个JAX-RS端点作为示例,您可以通过运行以下两个命令来检查它:

> cd src/main/java/org/superbiz/rest/HelloWorldEndpoint.java
> ls

然后返回项目的根目录,让我们调用为微服务创建Arquilian测试的命令

> wildfly-swarm-new-test --target-package org.superbiz --named HelloWorldEndpointTest --as-client

在这种情况下,该测试称为HelloWorldEndpointTest,并且测试将以Arquillian as-client模式运行(这意味着该测试未部署在容器内,将在本地运行时运行)。 您可以使用以下两个命令检查生成的代码:

> cd src/test/java/org/superbiz
> cat HelloWorldEndpointTest.java

请注意,该测试尚未验证任何内容,但是由于我们使用的是as-client模式,因此该测试会在启动应用程序的位置注入URL。 让我们使用REST-assured添加一些检查。返回项目的根目录并通过调用next命令添加REST-assured依赖项:

> project-add-dependencies io.rest-assured:rest-assured:3.0.1:test
> cat pom.xml

最后,您可以在空测试中使用REST保证的方法来验证您的微服务端点是否有效地返回“来自WildFly Swam的问候!”。

package org.superbiz;import io.restassured.builder.RequestSpecBuilder;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.arquillian.test.api.ArquillianResource;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.wildfly.swarm.arquillian.DefaultDeployment;import java.net.URISyntaxException;
import java.net.URL;import static io.restassured.RestAssured.given;
import static org.hamcrest.CoreMatchers.is;@RunWith(Arquillian.class)
@DefaultDeployment(testable = false, type = DefaultDeployment.Type.WAR)
public class HelloWorldEndpointTest {@ArquillianResourceprivate URL url;@Testpublic void should_start_service() throws URISyntaxException {RequestSpecBuilder requestSpecBuilder = new RequestSpecBuilder();requestSpecBuilder.setBaseUri(url.toURI());given(requestSpecBuilder.build()).when().get("hello").then().assertThat().body(is("Hello from WildFly Swarm!"));}
}

当您运行此测试时,幕后发生的事情是微服务在本地打包和部署。 当服务准备好接收传入的请求时,测试将向/ hello发送GET请求,并断言响应正文为“来自WildFly Swam的Hello!”。
您可以在https://youtu.be/9xb6GIZ1gjs看到运行
这是一个非常简单的示例,而这正是本文的目的。 只需向您展示如何使用Forge并运行一些命令,即可启动一个已开始运行其集成测试的项目。

翻译自: https://www.javacodegeeks.com/2017/01/develop-microservice-forge-wildfly-swarm-arquillian.html

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

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

相关文章

html页面加载时触发的方法,在页面加载时触发onchange html事件

好的,我在select字段上有一个onchange事件。它现在很棒。当下拉“网络”更改时,它会刷新第二个下拉列表。我还希望顶部的ajax代码在页面加载和onchange上触发,以便填充第二个列表。这是因为它在编辑页面上。这是使用第一个的ajax调用function…

PYTHON-进阶-编码处理小结

开始 用python处理中文时,读取文件或消息,http参数等等 一运行,发现乱码(字符串处理,读写文件,print) 然后,大多数人的做法是,调用encode/decode进行调试,并没有明确思考为何出现乱码…

华为鸿蒙话题作文800字,关于鸿蒙OS 华为最高层发布最新通知:统一口径-华为,智能手机,鸿蒙...

6月2日晚,华为正式推出了HarmonyOS(鸿蒙操作系统),引发了国内外空前关注。OS操作系统是中国手机甚至整个科技行业的弱点,因此鸿蒙OS带来的震撼及争议都很多,甚至华为内部员工对它的认知也不相同。为此华为总裁办昨天发布了题为《关…

8-4 Fabled Rooks uva11134

题意:你的任务是在n*n的棋盘上放 n 小于5000 个车 使得任意两个车不互相攻击 且第i个车在一个给定的矩形ri之内 给出该矩形左上角坐标和右下角坐标四个点 必须满足放车的位置在矩形内 边上也行 如果无解输出IMPSSIBLE 行与列是独立的 所以可以分割成两个一模一…

谷歌guava_Google Guava MultiMaps

谷歌guava番石榴 这是我尝试解释和探索Google很棒的Guava java库的系列文章中的第一篇。 我在搜索Apache Commons Collections的通用版本时遇到了番石榴(Guava)–我需要一个Bimap并且厌倦了必须使用强制类型转换来填充我的代码–但是我发现要好得多。 …

python 获取系统相关编码的函数

怎么避免UnicodeEncodeError: ‘ascii’ codec can’t…类似的错误? 1、首先在py文件头部指定文件内容编码,例如:# coding: utf8 2、文件保存的时候要和py文件头部编码一致 3、在用decode和encode的时候,一定要确认要转换的字符原…

百度的html代码是什么,百度网页源代码是什么?

2017-07-28Java抓取网页的内容代码是什么public static String getHtmlReadLine(String httpurl){String CurrentLine”";String TotalString”";InputStream urlStream;String content”";try {URL url new URL(httpurl);// URL url new URL(“http://www。 …

html中高与行高的区别,深入了解css的行高Line Height属性

什么是行间距?古时候我们是用印刷机来处理文字,印出来的每个字都位于独立的一个块里。行间距,即传说中控制两行文字之间垂直距离的东东。在CSS,line-height被用来控制行与行之间的垂直距离。不过行间距与半行间距还是取决于CSS中的…

自动生成优化的Java类专业知识

如果您今年访问过JavaOne,您可能已经参加了我的演讲“如何从数据库生成定制的Java 8代码”。 在那次演讲中,我展示了如何使用Speedment Open Source工具包使用数据库作为域模型来生成各种Java代码。 我们没有时间要考虑的一件事是,Speedment不…

vue动态路由配置,vue路由传参

如果是不同的组件过来的,可以设置不同的id值,只要在目标组件获取属性id的值就可以了,参数就利用query.属性值来获取 转载于:https://www.cnblogs.com/xiaoqi2018/p/10434318.html

Linux Netcat 命令——网络工具中的瑞士军刀

netcat是网络工具中的瑞士军刀,它能通过TCP和UDP在网络中读写数据。通过与其他工具结合和重定向,你可以在脚本中以多种方式使用它。使用netcat命令所能完成的事情令人惊讶。 netcat所做的就是在两台电脑之间建立链接并返回两个数据流,在这之后…

win10怎么放计算机在桌面,win10我的电脑怎么放在桌面

win10我的电脑图标怎么放在桌面呢?一不小心将win10桌面上的此电脑图标删除了,找了半天都没找到它。win10系统怎么将我的电脑图标藏的隐蔽。今天,我就将找回win10我的电脑图标方法分享给你们刚重装完win10系统有些小伙伴就急急忙忙的来询问小编…

project 2013 显示标题

1、分析 右键只能插入任务,不能插入标题,而插入任务会被编号,目前只能在打印设置标题,不能在编辑界面显示标题的,或者使用最高级任务的方式 2、解决 文件,打印,页面设置,页眉&#x…

getopt在Python中的使用

在运行程序时,可能需要根据不同的条件,输入不同的命令行选项来实现不同的功能。目前有短选项和长选项两种格式。短选项格式为"-"加上单个字母选项;长选项为"--"加上一个单词。长格式是在Linux下引入的。许多Linux程序都支…

大数据的数据采集数据处理_让我们处理大数据

大数据的数据采集数据处理作为开发人员,我们的重点是简单,有效的解决方案,因此,最有价值的原则之一就是“保持简单和愚蠢”。 但是使用Hadoop map-reduce很难坚持这一点。 如果我们要评估多个Map Reduce作业中的数据,我…

怎样正确使用和维护微型计算机,下篇:微型计算机应该怎样进行维护与保养

2. 养成良好的使用维护习惯(1)正确的使用习惯个人使用习惯对计算机的影响很大,首先是要正常开关机,开机的顺序是,先打开外设的电源,然后再开主机电源。关机顺序相反,先关闭主机电源,再关闭外设电源。其道理…

CF :K 一个含n条边的带权无向连通图,q次查询,每次查询两点间的最短距离。...

题意:给你一个含n条边的带权无向连通图,q次查询,每次查询两点间的最短距离。 思路:LCA思维。 设a,b两点间的距离为f(a,b) 则f(a,b)dis[a]dis[b]-2*dis[lca(a,b)]; 由于n条边,因此我们先任取一条边&#xff…

每天一个linux命令(20):find命令之exec

find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作,这个时候exec的作用就显现出来了。 exec解释: -exec 参数后面跟的是command命令,它的终止是以;为结束标志的&#x…

英语作业介绍一项发明计算机,介绍电脑的发明的英语作文

匿名用户1级2008-07-25 回答Simple 1:Different eras of political history are frequently identified with royal dynasties, or great wars and revolutions.Eras in the history of art and architecture may be distinguished by styles such as Renaissance, Gothic, Imp…

Math、Date内置对象方法整理

Math : 内置的对象&#xff08;构造函数&#xff09;静态属性或静态方法。一、Math.PI : 圆周率console.log(Math.PI);二、近似值1. 四舍五入 &#xff1a; Math.round()注: 负数时&#xff0c; < 0.5 舍去 > 0.5 进一console.log(Math.round(4.5)); //5console…