Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Tycho项目中为非OSGi JUnit测试添加仅测试依赖项_Java_Eclipse_Maven_Tycho - Fatal编程技术网

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

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执行,目前还

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

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

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

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

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

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

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

我可以将mockito依赖项添加为作用域
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测试运行”运行,并且不需要作为插件测试执行)。我正在寻找一些解决依赖性问题的解决方案(看起来这应该是一个很小的问题!),而不需要为测试创建捆绑包所带来的管理和运行时开销。最后,创建一个单独的捆绑包将是最后的手段,但如果有其他合适的解决方案,我很乐意接受。