【问题标题】:Excluding bundles from launching SWTBot tests in tycho在 tycho 中从启动 SWTBot 测试中排除捆绑包
【发布时间】:2012-09-10 09:13:59
【问题描述】:

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

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

【问题讨论】:

    标签: eclipse maven tycho swtbot


    【解决方案1】:

    依赖链org.eclipse.swtbot.eclipse.finder --> org.eclipse.ui.editors --> org.eclipse.ui.ide 包含一个可选链接:第一个包只需要第二个包,通过包org.eclipse.ui.texteditor 的可选导入。这就是为什么您可以从 Eclipse 启动的测试运行时中删除 o.e.ui.ide 包,而 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 也不应该需要它。请提交bug report for Tycho 并附上重现问题的最小示例项目,以便我解决此问题。

    【讨论】:

    • 不幸的是,这并不能解决问题,依赖不是可选的 - org.eclipse.swtbot.eclipse.finder 为编辑器、视图和工作台提供了测试功能,这也是我无法删除直接依赖的原因。但是非常感谢您的回答,我认为此过滤器功能在其他情况下可能会很方便,而我之前并不知道。
    • 我得到了依赖解析错误。我认为给依赖项提供一个像 maven 依赖项一样的范围会很酷。我什至尝试将其重新引入为 maven 依赖项,使用 pomConsider 并将范围设置为 provided 仍然会导致依赖项解析错误。
    • 仅供参考:Igor's p2 browser 是分析传递 p2/OSGi 依赖关系的好工具。它甚至可以直接从链接的站点启动。
    • @CodeSeavers:感谢您测试我的原始答案 - 我现在弄清楚了为什么它不起作用并相应地编辑了答案。
    • 太好了,谢谢!现在我重写了测试,让它在 CI (maven) 环境中工作,并在我找到时间编译示例项目时立即提交一个错误
    猜你喜欢
    • 1970-01-01
    • 2014-10-19
    • 2020-02-02
    • 2018-05-16
    • 2014-10-01
    • 2021-12-30
    • 1970-01-01
    • 2021-08-08
    • 1970-01-01
    相关资源
    最近更新 更多