我对Tycho包装类型和项目结构有疑问。我目前有一个项目,其源代码和测试源目录都遵循典型的Maven约定,它是使用包类型'eclipse-plugin'构建的。这导致测试不在maven构建中运行。我能找到的最常见的解决方案是将测试源分离到自己的项目/包中,并通过'eclipse-test-plugin'构建它。我的问题:保持Maven约定并将整个项目构建为eclipse-test-plugin的缺点是什么?
根据http://wiki.eclipse.org/Tycho/Packaging_Types: “Tycho引入了新的eclipse-test-plugin打包类型来表示这样的项目。构建行为就像常规Eclipse插件一样,但这些插件在测试时特别处理。”
这让我相信除了生成的捆绑包之外实际上没有任何缺点可能取决于仅为测试源所需的捆绑包。然而,这也是通过'eclipse-plugin'构建(不分裂)的情况。可以肯定地说在这种情况下将包装类型更改为'eclipse-test-plugin'只会导致测试在maven构建中运行而没有其他副作用吗?
答案 0 :(得分:1)
(...)除了生成的捆绑包之外,实际上没有任何缺点,可能取决于仅为测试源所需的捆绑包。
这就是为什么在Tycho中有单独的eclipse-test-plugin模块进行测试的主要原因。
OSGi清单中没有作用域,因此测试依赖项会污染生产包的依赖关系。然后,当您将捆绑包安装到Eclipse或RCP中时,它可能会引入您的生产代码实际上不需要的测试捆绑包。对于大多数用户来说,这足以将他们的代码分解为高效和测试包。
分离测试的另一个潜在原因是,您希望通过生产包的OSGi API进行显式测试。在这种情况下,您不会使用片段进行测试,这可确保您的测试只能根据OSGi包可见性规则从生产包中加载类。