我们正在使用paxexam 3.3.0来测试在Karaf 3.0.0中运行的捆绑包,利用karafDistributionConfiguration()来部署功能文件。典型的用例如下:
捆绑1 - REST http服务
捆绑2 - 服务实现调用外部API
捆绑3 - 服务实现将事务记录保存到DB
捆绑4 - 接口
捆绑5 - 数据源
我的问题:paxexam集成测试用例应该驻留在哪里有明确的约定? paxexam测试应该始终存在于一个单独的maven项目中吗?这对于“完整”集成测试来说当然是有意义的,其中在单个测试中涉及多个捆绑包。
另一方面,将简单的单束集成测试作为每个maven项目的一部分进行测试可能是有意义的,这样当我在单个项目/ bundle上执行构建时,我可以选择包含特定的集成测试那个捆绑。
思考?或者我可能会碰到这条线?
答案 0 :(得分:0)
嗯,Pax Exam是专为集成测试而设计的,因此最佳做法是将Integration测试与测试模块中的源分开。 但是也可以在同一个捆绑中使用Pax-Exam,但需要一些额外的tweeking。 您会在my blog和gihub project中找到工作样本 专业是将需要测试的类添加到pax-exam测试容器中,因为通常不存在同一项目的包。
答案 1 :(得分:0)
我们也在Apache Sling中使用这两个选项,以下是每个选项的例子:
Pax考试在一个单独的包中进行测试:
https://svn.apache.org/repos/asf/sling/trunk/installer/it
Pax Exam在同一个包中测试,使用在POM中设置的bundle.file.name
系统属性,以允许测试找到刚刚构建的包:
https://svn.apache.org/repos/asf/sling/trunk/bundles/scripting/core - 请参阅BindingsValuesProvidersByContextIT.java
课程。
我同意这两个选项都是有效的,具体取决于测试的“大”程度以及它们是测试单个包还是捆绑包的组合。
使用IT后缀命名测试类会导致它们在集成测试阶段由failafe插件执行,而不是在测试阶段确定。