将bundle排除在tycho中启动SWTBot测试之外



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

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

依赖链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机器人测试在Eclipse中运行,因此它们也应该在Tycho中运行。显然,Eclipse不需要org.eclipse.ui.ide.application捆绑包(否则,当您取消选择org.eclipse.ui.ide捆绑包时,它就会停止工作),所以Tycho也不应该需要它。请为Tycho提交一份错误报告,并附上一个重现问题的最小样本项目,这样我就可以解决这个问题。

最新更新