如何高效地 JUnit 测试 Eclipse RCP 插件

How to efficiently JUnit test Eclipse RCP Plugins

我们有一个相当大的 Eclipse RCP 应用程序,不确定如何正确测试它的插件。

现在我无法想象用 JUnit 插件测试做一些像样的 TDD 运行但是,执行这些测试花费的时间太长了。

非常欢迎关于该主题的任何建议和经验!

我能感受到你的痛苦:插件测试很糟糕!我也没有找到完全满意的解决方案。

虽然您可能会获得一些(毫秒?)秒,因为您将所需的插件减少到绝对最小值,但我发现它不切实际,因为依赖关系图的更改通常也需要调整启动配置.如果您的(共享)启动配置中有依赖于平台的片段(即 SWT),情况会变得更糟。我通常回退到 所有工作区并启用目标插件 选项并且没有发现启动速度有显着差异。

我不知道 RCP 平台的模拟库。

除了非常简单的情况外,我会避免模拟平台的某些部分,因为您很容易弄错行为。另请参阅此 post:

我的做法是尽可能将平台依赖项排除在我的应用程序代码之外,以便我可以编写普通的 JUnit 测试。平台 API 的自定义抽象可以帮助解决重复使用案例。

此外,可以在没有 workbench 运行 的情况下使用大量平台 API,当然,例如所有 SWT 和 JFace API、首选项... ,具有最小依赖性的简单 类 再次有助于远离插件测试。例如,将视图的内容与 IViewPart(或其等效的 e4)分开允许在不需要视图的情况下编写测试,进而是 运行 workbench 实例(如果我说的很明显,请原谅)。

插件测试 运行 明显更快,如果您将默认配置更改为 "headless mode",这也将防止烦人的 Eclipse Window 在测试期间弹出。