3

SWTBotを使用してRCPアプリケーションのUIテストを実行しています。これは、EclipseIDEでテストを起動するときに正常に機能します。ここで、Mavenでテストを実行したいと思います。これもこれまでのところ機能します。残念ながら、依存関係チェーンを通じて、org.eclipse.swtbot.eclipse.finder --> org.eclipse.ui.editors --> org.eclipse.ui.ideテストorg.eclipse.ui.ideを実行するアプリケーションにもが存在します。このバンドルでは、予期しないメニュー項目がいくつか存在するため、テストランタイムでバンドルを除外する必要があります。これはどのように達成できますか?

org.eclipse.ui.ideEclipseでテストを実行している間、SWTBotテストの起動構成でバンドルを除外するだけで、すべてが期待どおりに機能します。

4

1 に答える 1

5

依存関係チェーンorg.eclipse.swtbot.eclipse.finder --> org.eclipse.ui.editors --> org.eclipse.ui.ideにはオプションのリンクが含まれています。最初のバンドルには、パッケージのオプションのインポートを介した2番目のバンドルのみが必要ですorg.eclipse.ui.texteditoro.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テストハーネス()を使用すると、Tychoはテストランタイムに追加要件としてuseUIHarness=trueバンドルを無条件に追加します。org.eclipse.ui.ide.applicationそのバンドルにはオプションではない要件がorg.eclipse.ui.ideあるため、上記のターゲットプラットフォーム構成では、の満たされていない制約について不平を言う「依存関係を解決できません」エラーが発生しますorg.eclipse.ui.ide.application

ですから、あなたの場合には解決策があるとは思いませんが、これはTychoのバグだと思います。SWTボットテストはEclipseで実行されるため、Tychoでも実行する必要があります。明らかに、Eclipseはバンドルを必要としないのでorg.eclipse.ui.ide.application(そうでなければ、org.eclipse.ui.ideバンドルの選択を解除したときに動作を停止していたでしょう)、Tychoもそれを必要としないはずです。Tychoのバグレポートを提出し、問題を再現する最小限のサンプルプロジェクトを添付してください。これを修正できます。

于 2012-09-10T09:28:03.380 に答える