OSGi enRoute – 2.3_9 – 集成测试

你将在本章学到什么

在本章中我们将会创建一个OSGi集成测试。我们将会使用bnd-testing-maven-plugin来设置一个运行时环境,然后在OSGi中运行我们的JUnit测试。

确保你位于顶层文件夹中:

创建一个Test Bundle

我们将会首先创建一个test bundle。Test bundle中包含一个或多个JUnit测试用例。每个Bundle将会在Test-Case manifest数据头中列出它的测试类。Bnd运行时支持的Tester会查找带有这个数据头的Bundle,然后自动运行这些测试。

在本例中,我们准备定义一个验证Eval Service的测试。

创建 pom

让我们来创建pom文件。

我们需要API Bundle和JUnit作为依赖项。我们使用OSGi enRoute封装过的JUnit版本,因为普通的JUnit中没有OSGi元数据而很多封装版存在问题。

源代码

集成测试Bundle的源码必须放在src/main/java文件夹中,而不是test文件夹中,这可能会给大家带来一点点困惑。如果你意识到我们正在构建一个Bundle,而在src文件夹中的test代码不会最终出现在Bundle中,那么这样做是有意义的。

注意bnd运行时若要支持测试需要设置Test-Cases manifest数据头。因此我们需要一个bnd.bnd文件。

本例中最重要的技巧是使用了classes宏。它将会列出所有以Test结尾类。

安装

现在我们已经创建了一个测试bundle,因此我们需要安装它。

你应该也将这个工程添加到parent pom中。

集成测试工程

集成测试需要一个运行时环境。我们已经使用bndrun文件来为我们的应用程序创建了一个运行时环境。我们可以使用类似的一个或多个bndrun文件来执行集成测试。

如果你需要在不同的平台上进行测试,则多个环境会非常有用。

创建集成工程和pom

我们的pom内容如下:

这个插件将会遍历bndrun文件并且执行其中的测试。

下面是bndrun文件的相对路径。我们将会创建一个带有parsii provider的运行时用于测试。

为了解析我们的工程,我们需要列出需要解析的依赖。

parsii.bndrun文件

在bnd-testing-maven-plugin中的bndruns部分,我们列出了parsii.bndrun文件。我们因此需要创建它:

它的内容与我们在bndrun工程中创建的bndrun文件很类似。

我们希望测试parsii provider。

与之前的bndrun文件类似,我们需要解析该文件并查找bundle。

我们学到了什么?

在本章中,我们创建了一个OSGi集成测试。这需要一个带有Test-Case Manifest数据头集的test bundle。它还需要一个integration-test工程来运行测试。这个工程可以通过定义多个bndrun文件并将它们列在bnd-testing-maven-plugin的Configuration部分中来运行多7个集成测试。

打赏一下
支付宝
微信
除非注明,博客文章均为原创,转载请标明文章地址
本文地址: http://www.javafxchina.net/blog/2018/06/osgi-enroute-0207_9/
百度已收录