読者です 読者をやめる 読者になる 読者になる

Pluginのテストを自動化するには(その4-1:eclipse-Automated-Testsの中を見てみる)

自動化 テスト Eclipse Plugin開発

さて、今日はeclipse-Automated-Testsを動かしてみるところをやってみました。

必要なもの

ちょっと前に触れましたが、R-3.3.1.1のダウンロードサイトはこちらになります。また、直後でEclipse-SDKも必要になりますので、一緒に落としてください。

テストを実行してみる

中身を解凍してみました。以下がファイルの一覧です。

eclipse-testing/
eclipse-testing/label.properties
eclipse-testing/test.properties
eclipse-testing/org.eclipse.platform.doc.isv.javadoc.txt
eclipse-testing/org.eclipse.jdt.doc.isv.javadoc.txt
eclipse-testing/org.eclipse.jdt.apt.javadoc.txt
eclipse-testing/org.eclipse.pde.doc.user.javadoc.txt
eclipse-testing/testframework.html
eclipse-testing/runtests
eclipse-testing/test.xml
eclipse-testing/readme.html
eclipse-testing/runtests.bat
eclipse-testing/eclipse-junit-tests-M20071023-1652.zip

runtestsというファイルがテストを実行するためのスクリプトですが、このスクリプトの中ではテスト対象のEclipse-SDKを解凍するように書かれています。解凍するファイル名の対象がEclipse3.3.1.1の場合は『eclipse-SDK-M20071023-1652-*.zip』でなければなりません。先ほど落としてきたEclipse-SDKを解凍後のeclipse-testingの中へコピーし、eclipse-SDK-M20071023-1652-*.zipへ名前を変更した後にruntests(Windows環境の場合はruntests.bat)を実行してみると下記のusageが表示されます。

usage: ./runtests -os <osType> -ws <windowingSystemType> -arch <architecture> [-noclean] [<test target>][-properties <path>]

それじゃ試しに動かしてみましょうか。僕の環境は現在X86Ubuntu Linux 7.10上で動かしているので下記のようにコンソールに入力してみました。

./runtests -os linux -ws gtk -arch x86 ui 

するとものすごい勢いでEclipseのワークベンチがいくつか立ち上がり、画面が描画されていきます。最後に指定した「ui」がテストターゲットですが、EclipseのUIプラグインに対するテストを指定しました。なのでViewやPerspectiveがどんどん書き換えるテストが実行されます。パフォーマンスも同時に計測されているのです。
ここで指定した-osや-ws,-archはOS,WindowSystem,CPUのアーキテクチャを指定します。上記の例はx86系CPUで動作させているUbuntu Linux 7.10だから

-os linux -ws gtk -arch x86

と指定していました。
Windows XPの場合はバッチファイルの中でデフォルトが指定されているので不要です。-nocleanオプションや-propertiesオプション、そしてその他のテストターゲットについてはeclipse-testing/readme.htmlに書かれているので見てみてください。

runtestsの中身を見てみる

このスクリプトを見てみましょう。runtestsもruntests.batも環境が違うのですが、結局同じ事をしています。ダウンロードしてきたEclipse-SDKを解凍し、その中にあるランチャーを使ってtest.xmlにかかれたAntスクリプトを実行しているのです。Antスクリプトの実行をしている行は下記の行です。

非Windowsの場合(runtests)
$vmcmd -Dosgi.os=$os -Dosgi.ws=$ws -Dosgi.arch=$arch -jar $launcher -data workspace -application org.eclipse.ant.core.antRunner -file `pwd`/test.xml $tests -Dws=$ws -Dos=$os -Darch=$arch -D$installmode=true $properties -logger org.apache.tools.ant.DefaultLogger
Windowsの場合(runtests.bat)
%vmcmd% -Dosgi.os=%os% -Dosgi.ws=%ws% -Dosgi.arch=%arch% -jar eclipse\plugins\%launcher-jar% -data workspace -application org.eclipse.ant.core.antRunner -file test.xml %tests% -Dws=%ws% -Dos=%os% -Darch=%arch% -D%installmode%=true %properties% -logger org.apache.tools.ant.DefaultLogger

この中の『-application org.eclipse.ant.core.antRunner』がEclipse上に配置されているAntの実行をするためのアプリケーションになります。おや?普通のAntではダメなのでしょうか。えぇ、通常のAntではテストの自動化やビルドの自動化はできません。そもそもプラグイン同士のクラスローダーの解決をするためにはOSGiフレームワーク上で稼働している必要があります。また、Eclipse上のAntでは独自のタスクが登録されているのです。test.xmlが実行されているのがお分かりいただけたのではないかとおもいます。

eclipse-Automated-Testsの中のtest.xmlを見てみる

すいません。明日test.xmlを見てみます。