提问者:小点点

为第谷项目中的非OSGi JUnit测试添加仅测试依赖项


我有几个OSGi捆绑包是用Eclipse Tycho构建的。所有代码依赖项都是先管理清单的。

现在我想开发一些纯粹的JUnit测试,以便测试捆绑包的内部功能。这些测试不需要OSGi容器来执行,但它们确实需要Mockito。

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

我目前的方法是添加了一个保存 mockito 的项目/lib 文件夹.jar并且我手动将此 jar 添加到他的类路径中。这适用于局部日食执行,目前还不错。

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

所以我的问题是:我怎样才能以一种对每个同事都毫不费力的方式向Mockito添加依赖,并且在包执行期间不会导致任何问题?

我可以将它作为可选的依赖项添加到清单中。MF-file,但如上所述,这似乎不是正确的解决方案。

我是否可以将模拟依赖项添加为具有范围测试的普通pom优先依赖项,或者这会导致与正常的清单优先方法发生冲突?

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

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

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


共2个答案

匿名用户

如果你可以使用一个完全只由Maven依赖项组成的类路径(例如到Mockito)来运行你的测试,你也可以为这些测试创建一个带有jar打包的模块。在该模块中,您还将向捆绑包添加一个依赖项,然后将其用作普通 JAR。

在这种情况下,您丢失的是传递依赖项的解析。jar项目将由Maven解析,而Maven不知道OSGi包的Manifest依赖项。但是根据您想要测试的确切性质,这可能仍然有效。

匿名用户

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

例如,看看JDT-core git存储库,您会看到单独的测试包。注意,测试包有一个特殊的< code>packaging-type,即< code>eclipse-test-plugin。