gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:56:54 24 4
gpt4 key购买 nike

我有几个使用 Eclipse Tycho 构建的 OSGi 包。所有代码依赖项均以 list 优先的方式进行管理。

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

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

我目前的方法是添加一个包含 mockito.jar 的项目/lib 文件夹,然后手动将此 jar 添加到他的类路径中。这适用于本地 eclipse 执行,目前没问题。

问题是,每个同事也需要将 jar 添加到类路径中,因为 .classpath 文件显然没有 checkin 。另外,我猜想最终执行测试时会有问题,例如由于缺少类路径条目而在构建服务器上。

所以我的问题是:如何以一种对每个同事都毫不费力并且不会在 bundle 执行期间造成任何问题的方式将依赖项添加到 Mockito?

我可以将它添加为 MANIFEST.MF 文件的可选依赖项,但如上所述,这并不是正确的解决方案。

我能否将 mockito-dependency 添加为范围为 test 的普通 pom-first 依赖项,或者这会导致与普通的 manifest-first 方法冲突吗?

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

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

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

最佳答案

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

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

关于java - 在 Tycho 项目中为非 OSGi JUnit 测试添加仅测试依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33545438/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com