有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我有几个用Eclipse Tycho构建的OSGi包。首先管理所有代码依赖项

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

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

我目前的做法是添加一个project/lib文件夹来保存mockito。我手动将这个jar添加到他的类路径中。这适用于本地eclipse执行,目前还可以

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

所以我的问题是:我如何将依赖项添加到Mockito中,使每个同事都能毫不费力地工作,并且在bundle执行期间不会造成任何问题

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

我是否可以将mockito依赖项添加为作用域为test的普通pom优先依赖项,或者这会导致与普通的清单优先方法冲突

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

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

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


共 (1) 个答案

  1. # 1 楼答案

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

    在这种情况下,你失去的是可传递依赖的解析。然后jar项目将由Maven解决,Maven不知道OSGi包的清单依赖关系。但根据你想要测试的确切性质,这可能仍然有效