我应该在哪里放置Eclipse插件片段的testcode?

时间:2014-02-23 13:27:04

标签: unit-testing eclipse-plugin single-source eclipse-fragment

我在搜索Eclipse插件测试代码的最佳实践时发现了几篇帖子。他们中的大多数都建议像this

这样的片段

我有一个单一来源的插件,它有两个片段,一个用于RCP,另一个用于RAP。

现在,如果我创建另一个片段进行测试,我就无法从测试片段中访问RCP片段API。

有一个标题Eclipse-ExtensibleAPI,如果设置为true,主机插件将使其片段API可用。但它可用于需要它的其他插件,而不是它自己的片段(测试片段)。

有人可以帮我吗?

1 个答案:

答案 0 :(得分:4)

这个问题是Eclipse约定将测试放在单独项目中的结果。这种分离的目的是从主项目中排除测试依赖性,如JUnit,模拟框架等。然而,这种推理是基于越来越过时的假设。如果您既不使用PDE构建也不使用插件测试,您可以考虑将测试移动到包含源代码的同一项目中。

我认为单元测试属于项目的源代码,不应该分开。检查源代码的每个人也应该进行测试。

PDE构建

Eclipse插件项目曾经使用PDE build构建,它从Manifest文件读取依赖项,无法区分测试范围和编译范围的依赖项。虽然PDE构建仍在IDE中用于导出,但在大多数Eclipse项目(包括平台本身)中它已被tycho取代。 Tycho基于Maven,允许测试范围的依赖关系不会最终进入构建的工件。

如果将测试移动到主项目中,则可以将测试依赖项添加到项目构建路径,或者查看是否可以使用m2e来管理依赖项。

插件测试

导致测试分离的另一个假设是所有测试都按所谓的插件测试执行。插件测试需要一个正在运行的OSGi环境,它们可以被认为是比单元测试更多的集成测试。这些测试不需要访问片段的内部,而是使用环境中可用的片段测试宿主束的功能。

普通单元测试不应该要求OSGi环境,因此它们无论如何都使用相同的类加载器,因此不需要保留碎片。如果使用tycho构建,则必须使用maven-surefire而不是tycho-surefire,因为后者将测试作为插件测试执行。