2014-01-29 26 views
0

我对Tycho包装类型和项目结构有疑问。我目前有一个项目,其源代码和测试源代码目录遵循典型的Maven约定,该约定是使用包类型'eclipse-plugin'构建的。这导致测试不在maven版本中运行。我能找到的最常见的解决方案是将测试源分离到它自己的项目/包并通过“eclipse-test-plugin”构建它。我的问题:保持Maven约定并将整个项目构建为eclipse-test-plugin有什么缺点?使用Tycho的同一项目中的源代码和测试源

根据http://wiki.eclipse.org/Tycho/Packaging_Types: “第谷引入了新的Eclipse的测试插件封装类型来表示这些项目建设的行为就像是普通的Eclipse插件,但这些都是在测试时间经过特殊处理的。”

这使我相信,除了最终的bundle之外,实际上没有任何缺点,可能取决于测试源只需要的bundle。但是,通过“eclipse-plugin”构建(不分割)也是如此。在这种情况下,将包装类型更改为“eclipse-test-plugin”只能导致在maven版本中运行测试而没有其他副作用,这是否安全?

回答

1

(...)实际上没有任何缺点,除了结果束可能取决于只有测试源需要的束。

这是为什么在Tycho中有单独的eclipse-test-plugin模块用于测试的主要原因。

OSGi清单中没有范围,因此测试依赖性会污染您的工作包的依赖性。然后,当您将软件包安装到Eclipse或RCP中时,它可能会拉入您的生产代码实际上并不需要的测试包。对于大多数用户来说,这足以将他们的代码分为高效和测试包。

分离测试的另一个潜在原因是,您希望通过OSGi API明确测试您的工作包时。在这种情况下,您不会使用片段进行测试,这可确保您的测试只能根据OSGi包可见性规则从生产包中加载类。

+0

谢谢您的回复。我了解你所提出的观点,但并不能真正回答我的问题。也许我应该把它转过来。如果我有一个只包含生产代码的项目,它会将它打包为'eclipse-test-plugin'而不是'eclipse-plugin'会产生什么后果? –

+1

您需要将[failIfNoTests](http://www.eclipse.org/tycho/sitedocs/tycho-surefire/tycho-surefire-plugin/test-mojo.html#failIfNoTests)设置为false以使构建该模块通过,但是你会建立一个可以像使用eclipse-plugin构建一样的方式使用的bundle。 – oberlies

相关问题