在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-type
的eclipse-test-plugin
。
- 获取“ClassNotFoundException:ResteasyBootstrap”和“ClassNotFoundException:SpringContextLoaderListenerexception”
- Android – Eclipse项目制作和R文件错误
- 按下点时,Eclipse Mars:Content Assistant无法完成
- 如何自动配置Eclipse?
- 如何在Java应用程序中以编程方式运行所有JUnit测试?
- Eclipse插件:创建动态菜单和相应的处理程序?
- 有没有办法在构建之前告诉Eclipse“全部保存”?
- Eclipse中的I / O重定向?
- 在maven构建中使用Eclipse Java Compiler(ecj)