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

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

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

因为Mockito显然只在运行非OSGi测试时才需要,而不是在捆绑包本身执行期间,所以将依赖项添加到MANIFEST.MF文件是错误的。

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

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

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

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

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

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

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

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

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

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

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

例如,查看JDT-core git存储库 ,您将看到单独的测试包。 请注意,测试包具有特殊的packaging-typeeclipse-test-plugin