5

私の RCP は 3.x Eclipse で作成され、現在は互換性レイヤーを使用して 4.x にあります。これは私が持っているセットアップです: 私は2つのプラグインを持っています:xyz-pluginxyz-rcp-plugin. 私の RCP アプリケーションは、これら 2 つのプラグインで構成されています。xyz-testホスト プラグインがxyz-pluginSWTBot テストであり、それを含むテスト フラグメント ( ) があります。私の製品構成は、の 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>
4

1 に答える 1

5

Tychoは、構成を定義するバンドルをテストランタイムに自動的に追加しません<application>。このバンドルが含まれていることを手動で確認する必要があります。

これを行う1つの方法は、テストプロジェクトのpom.xmlで追加の依存関係を指定することです。このようにして、バンドルまたは機能全体(推移的な依存関係を含む)をテストランタイムに追加できます。

pom.xmlスニペットの例:

<plugin>
  <groupId>org.eclipse.tycho</groupId>
  <artifactId>target-platform-configuration</artifactId>
  <version>${tycho-version}</version>
  <configuration>
    <dependency-resolution>
      <extraRequirements>
        <requirement>
          <type>eclipse-plugin</type>
          <id>xyz-rcp-plugin</id>
          <versionRange>0.0.0</versionRange>
        </requirement>
      </extraRequirements>
    </dependency-resolution>
  </configuration>
</plugin>
于 2013-02-20T13:13:13.247 に答える