私の RCP は 3.x Eclipse で作成され、現在は互換性レイヤーを使用して 4.x にあります。これは私が持っているセットアップです: 私は2つのプラグインを持っています:xyz-plugin
とxyz-rcp-plugin
. 私の RCP アプリケーションは、これら 2 つのプラグインで構成されています。xyz-test
ホスト プラグインがxyz-plugin
SWTBot テストであり、それを含むテスト フラグメント ( ) があります。私の製品構成は、の plugin.xml で定義されたアプリケーションを指していますxyz-rcp-plugin
。
Eclipse 経由で SWTBot テストを実行すると、すべて問題なく動作します。[メイン] タブで正しいアプリケーションを指定すると、正しいアプリケーションが起動します。
Maven 経由で (を使用して) 実行しようとするとmvn integration-test
、テスト用に UI を起動するコマンドの後、UI が開かず、テストの失敗があると報告されるだけで、実際にケースをテストする段階に達することさえありません。
私のテストフラグメントはxyz-plugin
そのホストとしてしか持たず、その依存関係を知っているので、これが起こっていると感じていますが、アプリケーションは実際には含まれてxyz-rcp-plugin
いるので、そのプラグインをテストワークスペースに持ち込まないと推測しています. <application>
実際、 pom ファイルで構成を省略すると、テストが実行されます。デフォルトの Eclipse SDK を起動するだけです。
しかし、アプリケーションのプラグインがテスト プラグインに依存していない場合、SWTBot テストでアプリケーションを実行するにはどうすればよいでしょうか?
以下は、テスト フラグメントの pom ファイルです。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.xyz</groupId>
<artifactId>all</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>com.xyz.test</artifactId>
<packaging>eclipse-test-plugin</packaging>
<properties>
<ui.test.vmargs></ui.test.vmargs>
</properties>
<profiles>
<profile>
<id>macosx</id>
<activation>
<os>
<family>mac</family>
</os>
</activation>
<properties>
<ui.test.vmargs>-XstartOnFirstThread</ui.test.vmargs>
</properties>
</profile>
</profiles>
<build>
<plugins>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-surefire-plugin</artifactId>
<version>${tycho-version}</version>
<configuration>
<useUIHarness>true</useUIHarness>
<useUIThread>false</useUIThread>
<product>com.xyz.rcp.product</product>
<application>com.xyz.rcp.Application</application>
<argLine>${ui.test.vmargs}</argLine>
<dependencies>
<dependency>
<!-- explicit dependency is only needed because SWTbot brings its
own hamcrest bundle which conflicts with the one from junit in the eclipse
platform -->
<type>p2-installable-unit</type>
<artifactId>org.hamcrest</artifactId>
<version>0.0.0</version>
</dependency>
</dependencies>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unpack-xyz</id>
<phase>compile</phase>
<goals>
<goal>unpack-dependencies</goal>
</goals>
<configuration>
<excludeTransitive>true</excludeTransitive>
<includeTypes>tar.gz</includeTypes>
<outputDirectory>${project.build.directory}/work</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>