【问题标题】:Where should paxexam tests reside?paxexam 测试应该放在哪里?
【发布时间】:2014-02-04 10:48:56
【问题描述】:

我们正在使用 paxexam 3.3.0 来测试在 Karaf 3.0.0 中运行的捆绑包,利用 karafDistributionConfiguration() 来部署功能文件。一个典型的用例如下所示:

捆绑 1 -- REST http 服务
Bundle 2 -- 调用外部 API 的服务实现
Bundle 3 -- 服务实现将交易记录保存到数据库
Bundle 4 -- 接口
Bundle 5 -- 数据源

我的问题:对于 paxexam 集成测试用例的存放位置是否有明确的约定? paxexam 测试是否应该始终存在于单独的 Maven 项目中?这对于在单个测试中涉及多个捆绑包的“完整”集成测试当然是有意义的。

另一方面,将简单的单包集成测试作为每个 maven 项目的一部分可能是有意义的,这样当我在单个项目/包上执行构建时,我可以选择包含特定的集成测试到那个捆绑包。

想法?或者我可能会遇到的陷阱?

【问题讨论】:

    标签: maven osgi apache-karaf pax-exam


    【解决方案1】:

    我们也在 Apache Sling 中使用这两个选项,以下是每个选项的示例:

    Pax Exam 测试在一个单独的包中:

    https://svn.apache.org/repos/asf/sling/trunk/installer/it

    使用 POM 中设置的 bundle.file.name 系统属性在同一个包中进行 Pax Exam 测试,以允许测试找到刚刚构建的包:

    https://svn.apache.org/repos/asf/sling/trunk/bundles/scripting/core - 请参阅 BindingsValuesProvidersByContextIT.java 类。

    我同意这两个选项是否有效取决于测试的“大小”以及它们是测试单个捆绑包还是捆绑包组合。

    使用 IT 后缀命名测试类会导致它们在集成测试阶段由故障安全插件执行,而不是在测试阶段执行。

    【讨论】:

      【解决方案2】:

      好吧,Pax Exam 是为集成测试而设计的,因此最好将集成测试与测试模块中的源代码分开。 但是也可以在同一个包中使用 Pax-Exam,不过需要一些额外的调整。 您可以在 my bloggihub project 中找到工作示例。
      特点是将需要测试的类添加到 pax-exam 测试容器中,因为通常同一个项目的包还不存在。

      【讨论】:

      • 谢谢——这篇博文特别有帮助
      猜你喜欢
      • 2023-04-09
      • 2010-10-23
      • 2012-07-31
      • 1970-01-01
      • 2023-03-13
      • 2012-02-17
      • 2018-11-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多