Java 在Tycho项目中为非OSGi JUnit测试添加仅测试依赖项
我有几个用EclipseTycho构建的OSGi包。首先管理所有代码依赖项 现在我想开发一些纯JUnit测试,以测试捆绑包的内部功能。这些测试不需要OSGi容器来执行,但它们确实需要Mockito 由于Mockito显然只在运行此非OSGi测试时才需要,而不是在捆绑包本身的执行期间,因此将依赖项添加到MANIFEST.MF文件中感觉是错误的 我目前的方法是添加一个包含mockito.jar的project/lib文件夹,并手动将这个jar添加到他的类路径中。这适用于本地eclipse执行,目前还可以 问题是,每个同事都需要将jar添加到类路径中,因为.classpath文件显然没有签入。此外,我猜想当测试最终将在构建服务器上执行时,会出现问题,因为缺少类路径条目 因此,我的问题是:如何将依赖项添加到Mockito中,使每个同事都能毫不费力地工作,并且在bundle执行期间不会造成任何问题 我可以将它作为可选的依赖项添加到MANIFEST.MF-file中,但如上所述,这似乎不是正确的解决方案 我可以将mockito依赖项添加为作用域Java 在Tycho项目中为非OSGi JUnit测试添加仅测试依赖项,java,eclipse,maven,tycho,Java,Eclipse,Maven,Tycho,我有几个用EclipseTycho构建的OSGi包。首先管理所有代码依赖项 现在我想开发一些纯JUnit测试,以测试捆绑包的内部功能。这些测试不需要OSGi容器来执行,但它们确实需要Mockito 由于Mockito显然只在运行此非OSGi测试时才需要,而不是在捆绑包本身的执行期间,因此将依赖项添加到MANIFEST.MF文件中感觉是错误的 我目前的方法是添加一个包含mockito.jar的project/lib文件夹,并手动将这个jar添加到他的类路径中。这适用于本地eclipse执行,目前还
test
的普通pom-first依赖项,还是这会导致与普通清单优先方法冲突
我还找到了maven eclipse插件
,它提供了classpathContainers
配置选项,但我没有找到类似的选项来向类路径添加库
测试位于包本身的src/test/java文件夹中
考虑到我在技术上不需要Tycho来执行这些测试,向使用eclipse Tycho构建的项目添加仅测试依赖项的最佳方法是什么?通常,您会在单独的包中看到测试,其中包含自己的清单和依赖项。这不是标准的Maven结构,但它更适合OSGi捆绑包的结构
例如,看看,您将看到单独的测试包。请注意,测试包有一种特殊的
打包类型
,即eclipse测试插件
,如果您可以使用一个只包含Maven依赖项的类路径运行测试(例如到Mockito),那么您还可以为这些测试创建一个带有jar
打包的模块。在该模块中,您还将向bundle添加一个依赖项,然后将其用作普通JAR
在这种情况下,您失去的是可传递依赖项的解析。然后,
jar
项目将由Maven解决,Maven不知道OSGi包的清单依赖关系。但是,根据您想要测试的内容的确切性质,这可能仍然有效。对于需要一个OSGi容器和几个bundle才能执行的集成测试,我们会这样做。但是对于简单的JUnit测试来说,这似乎是一个相当大的开销(那些位于当前位置的测试也可以使用“作为JUnit测试运行”运行,并且不需要作为插件测试执行)。我正在寻找一些解决依赖性问题的解决方案(看起来这应该是一个很小的问题!),而不需要为测试创建捆绑包所带来的管理和运行时开销。最后,创建一个单独的捆绑包将是最后的手段,但如果有其他合适的解决方案,我很乐意接受。