eclipse发布rest_在Eclipse中高效运行HTTP / REST集成测试
eclipse发布rest
最近,我有机会使用由我亲爱的Holger Staudacher编写的OSGi-JAX-RS-Connector库。 通过连接器,您可以通过将@Path注释的类型注册为OSGi服务来轻松发布资源-实际上,它工作得很好。
对我来说,使用普通的JUnit测试编写驱动的服务类测试是很自然的事,但提供附加的集成测试也很重要。 这些测试允许检查此类服务的运行时可用性和功能。 为了提供后者,我使用了Holger编写的另一个小助手– restfuse ,它是用于自动HTTP / REST测试的JUnit扩展。
该场景看起来像这样:
服务
@Path( '/message' )
public class SampleService {@GET@Produces( MediaType.TEXT_PLAIN )public String getMessage() {return 'Hello World';}
}
一个JUnit测试用例
public class SampleServiceTest {@Testpublic void testGetMessage() {SampleService service = new SampleService();String message = service.getMessage();assertEquals( 'Hello World', message );}
}
服务注册
<?xml version='1.0' encoding='UTF-8'?>
<scr:componentxmlns:scr='http://www.osgi.org/xmlns/scr/v1.1.0'name='SampleService'><implementation class='sample.SampleService'/><service><provide interface='sample.SampleService'/></service>
</scr:component>
Restfuse集成测试
@RunWith( HttpJUnitRunner.class )
public class SampleServiceHttpTest {@Rulepublic Destination destination= new Destination( 'http://localhost:9092' );@Contextprivate Response response;@HttpTest( method = Method.GET, path = '/services/message' )public void checkMessage() {String body = response.getBody( String.class );assertOk( response );assertEquals( MediaType.TEXT_PLAIN, response.getType() );assertEquals( 'HelloWorld', body );}
}
正在运行的服务
尽管所有这些工作都非常简单,但是却以某种方式使我感到困惑,即在能够执行集成测试之前,首先要在本地运行集成测试才能启动服务器。 我经常手头上的任务忙着忘了启动服务器,却遇到了连接超时等问题。
但是我通过使用PDE JUnit启动配置找到了解决方案,因为可以在运行测试的过程中将这样的配置设置为启动服务器。
为此,创建并选择一个包含所有要运行1的集成测试的测试套件。
…切换到主标签并选择无头模式...
…最后但并非最不重要的一点是配置服务器使用的程序参数,在我们的案例中,该参数主要涉及端口定义。
“插件”选项卡中的包选择包含与用于独立运行服务器的osgi启动配置相同的包,以及JUnit-,PDE JUnit-,restfuse-bundle及其依赖项。 所选的测试套件可能如下所示:
@RunWith( Suite.class )
@SuiteClasses( {SampleServiceHttpTest.class
} )
public class AllRestApiIntegrationTestSuite {public static String BASE_URL= 'http://localhost:'+ System.getProperty( 'org.osgi.service.http.port' );
}
唯一不寻常的是BASE_URL常量定义。 如上所述,在启动配置中将测试运行的服务器端口指定为程序参数。 但是Restfuse测试需要在目标规则定义期间提供端口。 使用上述方法可以在不影响测试的情况下更改配置中的端口。 只需将常量用作定义中的参数,如下面的代码段2 3所示 。
@Rulepublic Destination destination= new Destination( BASE_URL );
这个简单的设置效果很好,并改善了我在本地运行集成测试的工作流程。 将启动配置保存在共享项目中后,您的团队成员便可以轻松地重用启动配置。
今天就这样,反馈一如既往地受到高度赞赏。 顺便说一句,霍尔格答应我写一篇文章,介绍如何将上述内容集成到基于Maven / tycho的build 4中 -请继续关注
- 当然,您也可以使用运行所选项目,程序包或源文件夹的所有测试的可能性,但是出于我们的目的,使用套件方法并运行单个测试用例是可以的
- 在现实世界中,您可能会为常量定义提供一个单独的类,以避免将测试耦合到套件。 为了简化起见,我在这里略过了。
- 请注意,使用静态导入包含BASE_URL,以提高代码段的可读性
- 霍尔格信守诺言,请参阅: http : //eclipsesource.com/blogs/2012/09/11/running-httprest-integration-tests-in-an-eclipse-tycho-build/
参考:来自JCG合作伙伴 Frank Appel的Code Affine博客在Eclipse中有效地运行HTTP / REST集成测试 。
翻译自: https://www.javacodegeeks.com/2012/11/running-httprest-integration-tests-efficiently-in-eclipse.html
eclipse发布rest
eclipse发布rest_在Eclipse中高效运行HTTP / REST集成测试相关推荐
- 在Eclipse中高效运行HTTP / REST集成测试
最近,我有机会使用由我亲爱的Holger Staudacher编写的OSGi-JAX-RS-Connector库. 通过连接器,您可以通过将@Path注释的类型注册为OSGi服务来轻松发布资源-实际上 ...
- 在Eclipse中编译运行Android4.3应用源码——Launcher2和Gallery2
转载,原博地址:http://blog.csdn.net/klpchan/article/details/11843295 ====================================== ...
- eclipse中run运行不了_Springboot专辑:运行 Spring Boot 应用的 3 种方式!
一:在 IDE 中运行 在 Eclipse.IDEA 中直接运行,又有以下两种方式. jar 包方式 Spring Boot 默认采用 jar 包内嵌 Tomcat.Jetty 等 Server 的方 ...
- eclipse代码服务器运行不了,eclipse中run运行不了怎么回事?常见问题及解决方法...
eclipse是java人员常用的开发软件,它适合新手非常好用.但是最近大家在开发过程中发现eclipse中run运行不了,不知道这是怎么回事?那么接下来,我们就来给大家讲解一下eclipse中run ...
- 在eclipse中直接运行JavaWeb项目时打开指定页面(默认的jsp)
在Eclipse中直接运行JavaWeb项目时打开指定Jsp文件 原因 没改之前 解决方法 原因 今天做了一个JavaWeb的项目,必须先打开指定的jsp(我在这个jsp里建立了与数据库的连接,并且有 ...
- SpringBoot项目在eclipse中能运行,部署到服务器 nohup java -jar 方式运行就无法显示报错
SpringBoot项目在eclipse中能运行,部署到服务器 nohup java -jar 方式运行就无法显示报错: *************************** APPLICATION ...
- eclipse怎样改编码格式_Eclipse中各种编码格式及设置
操作系统:Windows 10(家庭中文版) Eclipse版本:Version: Oxygen.1a Release (4.7.1a) 刚看到一篇文章,里面介绍说Ascii.Unicode是编码,而 ...
- eclipse发布web项目到tomcat服务器
README: 使用eclipse发布web项目到tomcat有很多坑儿的.下面依依道来. step1)eclipse建立web 项目: step2)在tomcat服务器上为该web项目配置的虚拟目 ...
- 让32位Eclipse和64位Eclipse同时在64的Windows7上运行
转自让32位Eclipse和64位Eclipse同时在64的Windows7上运行 参考这篇文章:http://wenku.baidu.com/view/57994c270066f5335a81214 ...
最新文章
- ROS与PCL中点云数据之间的转换
- 转载:有关SQL server connection Keep Alive 的FAQ(3)
- linux存储--线程与栈(十五)
- brew 安装mysql5.6_mac使用brew安装mysql的坑
- 用服务器控件在后台调用前台客户端JS方法
- 总结Java访问权限
- 线性调频信号(LFM)的形式及幅度谱、相位谱特性
- JavaScript案例精解(一)
- 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP 1
- Windows无法访问指定设备,路径或文件.您可能没有合适的权限访问这个项目
- 手把青秧插满田,低头便见水中天。心地清净方为道,退步
- C/C++中各种类型char、int、long、double等数据范围
- 自学Python第二十二天- Django框架(一)创建项目、APP、快速上手、请求和响应流程、模板、数据库操作
- Google宣布收购摩托罗拉移动
- 字节跳动(今日头条)推荐算法实习生面试
- 生成对抗网络GANs
- 【JAVAEE】JUC(java.util.concurrent)的常见类
- 老照片修复matlab程序,App Store 上的“老照片修复”
- 数据治理与数据管理的定义
- 区块链开发笔记——提高区块链系统性能和可扩展性的方法,侧链技术
热门文章
- 从 0 开始手写一个 Spring MVC 框架,向高手进阶
- 一次恐怖的 Java 内存泄漏排查实战
- Oracle入门(十四.22)之创建DDL和数据库事件触发器
- java变量作用域Scope
- Class的 getSuperclass与getGenericSuperclass区别
- mybatis报错Type interface xxx.Dao is not known to the MapperRegistry
- Java秒杀系统实战系列~RabbitMQ死信队列处理超时未支付的订单(转)
- 转-Kafka【第一篇】Kafka集群搭建
- elasticsearch7常见查询(term、match、bool、filter)
- idea快速生成crud_Java / Spring:如何快速生成完整的Swagger文档CRUD REST API