最近,我有机会使用由我亲爱的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捆绑软件及其依赖项。 所选的测试套件可能如下所示:

@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的版本4中 -请继续关注

  1. 当然,您也可以使用运行选定项目,程序包或源文件夹的所有测试的可能性,但是出于我们的目的,使用套件方法并运行单个测试用例是可以的
  2. 在现实世界中,您可能会为常量定义提供一个单独的类,以避免将测试耦合到套件。 为了简化起见,我在这里略过。
  3. 请注意,使用静态导入包含BASE_URL,以提高代码段的可读性
  4. Holger信守诺言,请参阅: 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中高效运行HTTP / REST集成测试相关推荐

  1. eclipse发布rest_在Eclipse中高效运行HTTP / REST集成测试

    eclipse发布rest 最近,我有机会使用由我亲爱的Holger Staudacher编写的OSGi-JAX-RS-Connector库. 通过连接器,您可以通过将@Path注释的类型注册为OSG ...

  2. eclipse代码服务器运行不了,eclipse中run运行不了怎么回事?常见问题及解决方法...

    eclipse是java人员常用的开发软件,它适合新手非常好用.但是最近大家在开发过程中发现eclipse中run运行不了,不知道这是怎么回事?那么接下来,我们就来给大家讲解一下eclipse中run ...

  3. 在eclipse中直接运行JavaWeb项目时打开指定页面(默认的jsp)

    在Eclipse中直接运行JavaWeb项目时打开指定Jsp文件 原因 没改之前 解决方法 原因 今天做了一个JavaWeb的项目,必须先打开指定的jsp(我在这个jsp里建立了与数据库的连接,并且有 ...

  4. SpringBoot项目在eclipse中能运行,部署到服务器 nohup java -jar 方式运行就无法显示报错

    SpringBoot项目在eclipse中能运行,部署到服务器 nohup java -jar 方式运行就无法显示报错: *************************** APPLICATION ...

  5. floodlight java_floodlight学习系列(1)——在Eclipse中安装运行floodlight

    环境:ubuntu 16.04 前提:已经成功安装了JDK和Ecplise 1.安装floodlight apt-get install build-essential default-jdk ant ...

  6. eclipse中run运行不了_Springboot专辑:运行 Spring Boot 应用的 3 种方式!

    一:在 IDE 中运行 在 Eclipse.IDEA 中直接运行,又有以下两种方式. jar 包方式 Spring Boot 默认采用 jar 包内嵌 Tomcat.Jetty 等 Server 的方 ...

  7. eclipse中run运行不了_eclipse中run as运行不了

    1.首先在eclipse中更改项目名称(alt+shift+R)2.在系统文件中找到项目的根目录下的.mymetadata文件,将project-module节点下的name属性修改为新的项目名3.关 ...

  8. eclipse中run运行不了_使用Eclipse编写第一个Java程序HelloWorld

    1.打开Eclipse软件,点击File菜单,如图所示: 2.移动鼠标New--->Java Project,再点击Next按钮,如图所示: 3.然后在Project name输入框中输入项目名 ...

  9. 在Eclipse中编译运行Android4.3应用源码——Launcher2和Gallery2

    转载,原博地址:http://blog.csdn.net/klpchan/article/details/11843295 ====================================== ...

最新文章

  1. Error on line 19, column 16 of pubspec.yaml: Mapping values are not allowed here. Did you miss a co
  2. 清华大学、腾讯发布新书 详解产业互联网的中国路径
  3. vc++ 6.0下Glut的配置 及 Glut 框架介绍
  4. 推荐系统中的长尾物品(Tail Items)推荐问题
  5. docker下部署Tomcat运行war包
  6. [回归分析][14]--Logistic回归
  7. Storm 02_Storm 计算模型
  8. mybatis连接oracle_Mybatis 系列 0:初恋Mybatis
  9. 简单的HTML5灰度图查看器 simple PACS DICOM HTML5 viewer
  10. [題解]luogu_P2055假期的宿舍(二分圖最大匹配)
  11. python qq红包_numpy的Python,发红包,用
  12. python 快速排名发包_百度发包快排【SEO超快速排名系统】 - 「黑酷SEO」
  13. 2021美赛总结(假)。预祝大家获得满意的成绩!
  14. Latex 求职简历模版
  15. Python字符串:isspace、istitle、isupper、islower
  16. 隧道管廊UWB定位系统解决方案
  17. 恭贺德林教点穴网成立
  18. 给初学者推荐一个摆脱变量命名纠结的神器
  19. 服务器怎么解绑网站域名,宝塔面板如何解绑域名
  20. 高德地图实现的数据统计切换街景地图

热门文章

  1. 完整的MIME类型列表
  2. tomcat(14)服务器组件和服务组件
  3. 三思笔记_使用反射前先三思
  4. api自动化测试_API测试和自动化101:基本指南
  5. openwrt固定速率_固定速率与固定延迟– RxJava常见问题解答
  6. servlet异步_关于Servlet和异步Servlet
  7. Java中的观察者设计模式
  8. choiceformat_ChoiceFormat:数字范围格式
  9. 使用Jmeter的Websocket:获取性能数字
  10. 带有Spring Security的OAuth 2.0快速指南