3

我正在使用 SWTBot 为 RCP 应用程序运行 UI 测试,它在 eclipse IDE 中启动测试时运行良好。现在我想在 Maven 中运行测试,到目前为止它也有效。org.eclipse.swtbot.eclipse.finder --> org.eclipse.ui.editors --> org.eclipse.ui.ide不幸的是,通过依赖链org.eclipse.ui.ide也存在于运行测试的应用程序中。使用此捆绑包时,会出现一些意外的菜单项,并且应在测试运行时中排除该捆绑包。这怎么可能实现?

在 Eclipse 中运行测试时,我只是org.eclipse.ui.ide在 SWTBot 测试启动配置中排除了捆绑包,一切都按预期工作。

4

1 回答 1

5

依赖链org.eclipse.swtbot.eclipse.finder --> org.eclipse.ui.editors --> org.eclipse.ui.ide包含一个可选链接:第一个包只需要通过可选导入包的第二个包org.eclipse.ui.texteditor。这就是为什么您可以o.e.ui.ide从 Eclipse 启动的测试运行时中删除捆绑包,并且o.e.swtbot.eclipse.finder仍然可以工作的原因。

在正常情况下,您可以在 Tycho 的测试运行时中通过确保可选依赖项不在目标平台中来实现相同的目的:

<plugin>
   <groupId>org.eclipse.tycho</groupId>
   <artifactId>target-platform-configuration</artifactId>
   <version>${tycho-version}</version>
   <configuration>
      <filters>
         <filter>
            <type>eclipse-plugin</type>
            <id>org.eclipse.ui.ide</id>
            <removeAll />
         </filter>
      </filters>
   </configuration>
</plugin>

但这就是为什么这在您的特定情况下不起作用的原因:当您使用 UI 测试工具 ( useUIHarness=true) 时,Tycho 无条件地将捆绑包org.eclipse.ui.ide.application作为额外要求添加到您的测试运行时。该捆绑包对 . 有一个非可选要求org.eclipse.ui.ide,因此使用上面的目标平台配置,您将收到“无法解决依赖关系”错误,抱怨org.eclipse.ui.ide.application.

所以,我认为你的情况没有解决方案——但我认为这是第谷中的一个错误。SWT bot 测试在 Eclipse 中运行,因此它们也应该在 Tycho 中运行。显然,Eclipse 不需要org.eclipse.ui.ide.application捆绑包(否则当您取消选择org.eclipse.ui.ide捆绑包时它会停止工作),因此 Tycho 也不应该需要它。请为 Tycho 提交错误报告并附上重现问题的最小示例项目,以便我可以解决此问题。

于 2012-09-10T09:28:03.380 回答