在Tycho项目中为非OSGi JUnit测试添加仅测试依赖项

时间:2015-11-05 13:09:28

标签: java eclipse maven tycho

我使用Eclipse Tycho构建了几个OSGi-bundle。所有代码依赖关系都是首先管理的。

现在我想开发一些纯JUnit-Tests来测试bundle-internal功能。这些测试不需要OSGi容器来执行,但它们确实需要Mockito。

由于Mockito显然仅在运行此非OSGi测试时需要,而不是在捆绑本身执行期间,因此将依赖项添加到MANIFEST.MF文件会感觉不对。

我目前的做法是添加了一个包含mockito.jar的项目/ lib文件夹,并且我手动将此jar添加到他的类路径中。这适用于本地eclipse执行,暂时没问题。

问题是,每个同事都需要将jar添加到类路径中,因为.classpath文件显然没有签入。另外,我想在最终执行测试时会出现问题,例如因为缺少类路径条目而在构建服务器上。

所以我的问题是:如何以对每个同事轻松工作的方式将依赖项添加到Mockito中,并且在捆绑执行期间不会导致任何问题?

我可以将它作为可选依赖项添加到MANIFEST.MF文件中,但如上所述,它并不觉得这是正确的解决方案。

我可以将mockito-dependency添加为范围为test的普通pom-first依赖项,还是会导致与正常的manifest-first方法冲突?

我还发现maven-eclipse-plugin提供了classpathContainers配置选项,但我没有找到类似的选项来将类添加到类路径中。

测试位于包本身的src / test / java文件夹中。

在使用eclipse Tycho构建的项目中添加仅测试依赖项的最佳方法是什么,因为我在技术上不需要Tycho来执行这些测试?

2 个答案:

答案 0 :(得分:1)

如果您可以使用完全仅由Maven依赖项组成的类路径(例如,向Mockito)运行测试,则还可以为这些测试创建一个包含jar包的模块。从该模块中,您还将向该bundle添加一个依赖项,然后将其用作普通JAR。

在这种情况下你要解决的是传递依赖的解决方案。然后,Maven会解析jar项目,而Maven不知道OSGi包的Manifest依赖关系。但是,根据您要测试的确切性质,这可能仍然有效。

答案 1 :(得分:0)

通常,您会在单独的捆绑包中看到测试,并且具有自己的清单和依赖关系。这不是标准的Maven结构,但它更适合OSGi包的结构。

例如,查看JDT-core git repository,您会看到单独的测试包。请注意,测试包具有<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"> </script> <div class="rcmp_li lft"> <div class="rcm"> <div class="cmplogowrap clr cmp"> <a class="reclogo lft" href="#"></a> <a class="lft cmp" href="#"> <div class="tpjobwrap"> <div class="compName font_15">ABC </div> <div class="tpjob_desc">Construction</div> <div class="tpjob_desc">Mumbai</div> </div> </a> </div> <a class="lnk cmpjobs" href="#"> Active </a> </div> <div class="cmpfollow_wrap clr"> <div class="followbtnwrap rgt"> <a onclick="abc(this)" href="javascript:void(0)">Test</a> </div> <div id="my_follow61" class="followcnt rgt">6 </div> </div> </div>的特殊packaging-type