我使用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来执行这些测试?
答案 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
。