SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Webサービスを利用したEclipseプラグインの作成

Google Web APIsを使用したEclipseのプラグインの作成

Webサービスを利用したEclipseプラグインの作成 第2回


テストプラグインの作成

 さて、またまたテスト用のプラグインを作成して、上で作成したメソッドのテストをやってみたいと思います。

エクスポートするパッケージの指定

 「nu.mine.kino.plugin.google.ui」プラグイン内のソースのうち、他のプラグインに公開するパッケージを指定します。本来このプラグインは外部から呼び出されることはないのでエクスポートの指定をする必要はないのですが、テストプラグインより呼び出されるため、設定しています。

 外部に公開するパッケージは、

  • nu.mine.kino.plugin.google.ui
  • nu.mine.kino.plugin.google.ui.preferences

 を指定しました。

外部に公開するパッケージの指定
外部に公開するパッケージの指定

テストプロジェクトの作成

 プロジェクト名は「nu.mine.kino.plugin.google.ui.test」にします。テスト用プラグインには、テスト対象のプラグイン「nu.mine.kino.plugin.google.ui」と「org.junit」などを依存プラグインに追加しておきます。「MANIFEST.MF」は次のようになりました。

nu.mine.kino.plugin.google.ui.testプラグインのMANIFEST.MF
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Test Plug-in
Bundle-SymbolicName: nu.mine.kino.plugin.google.ui.test
Bundle-Version: 1.0.0
Bundle-Activator: nu.mine.kino.plugin.google.ui.test.Activator
Bundle-Localization: plugin
Require-Bundle: org.eclipse.ui,
 org.eclipse.core.runtime,
 org.junit,
 nu.mine.kino.plugin.google.ui,
 nu.mine.kino.plugin.log4j
Eclipse-LazyStart: true

テストクラスを作成する

 メソッドを実装したクラス「nu.mine.kino.plugin.google.ui.GooglePlugin」をパッケージ・エクスプローラで右クリックし、[新規]-[その他]を選択してウィザードを開きます。ウィザードでJUnitテスト・ケースを選択します。テストクラスを作成するダイアログが開くので、ソース・フォルダのプロジェクト名を「nu.mine.kino.plugin.google.ui.test」に変更します。

JUnitテスト・ケースのページ
JUnitテスト・ケースのページ

 [次へ]をクリックするとテストメソッドの追加画面になりますが、先のメソッドgetSpellingSuggestion(final String text,IProgressMonitor monitor)にチェックして[終了]をクリックします。

テスト・メソッドのページ
テスト・メソッドのページ

 テストクラス「GooglePluginTest」には次のようにメソッドを実装しました。

getSpellingSuggestionのテストメソッド
public void testGetSpellingSuggestion() {
  logger.debug("testGetSpellingSuggestion() - start");
  plugin.getPreferenceStore().setValue(PreferenceConstants.GOOGLE_KEY,
                                       "xxxxxxxxxxxx");
    String input = "Eclipsee";
    logger.debug("入力文字列: " + input);
    String spellingSuggestion
      = plugin.getSpellingSuggestion(input, new NullProgressMonitor());
    logger.debug("返却された文字列: " + spellingSuggestion);
    logger.debug("testGetSpellingSuggestion() - end");
}

 "xxxxxxxxxxxx"の箇所は、あらかじめGoogle SOAP Search APIのサイトで取得しておいたキーコードを設定してください。

 さて、このテストメソッドを実行します。パッケージ・エクスプローラで[GooglePluginTest]を選択し、Eclipseのツールバーから[実行]-[JUnitプラグイン・テスト]を選択します。Eclipseが起動して、Googleプラグインのメソッドが実行されます。テストしているメソッドは、渡された文字列でGoogleに問い合わせをしているのですが、Googleが単語の誤りなどで別の候補を返してきた場合に、ユーザーに問い合わせのダイアログを表示する仕様になっています。

 あえてスペルを「Eclipsee」などと間違えるようにしているので、下のようなダイアログが表示されます。

検索文字列を変更するダイアログ
検索文字列を変更するダイアログ

 ログには次のように出力されました。

JUnit実行結果(多少整形しています)
[main] DEBUG GooglePluginTest - testGetSpellingSuggestion() - start
[main] DEBUG GooglePreferenceInitializer - initializeDefaultPreferences() - start
[main] DEBUG GooglePreferenceInitializer - xxxxxxxxxxxx
[main] DEBUG GooglePreferenceInitializer - initializeDefaultPreferences() - end
[main] DEBUG GooglePluginTest - 入力文字列: Eclipsee
[main] DEBUG GoogleCorePlugin - start(BundleContext) - start
2007/05/26 11:59:55 org.apache.axis.utils.JavaUtils isAttachmentSupported警告: 要求されたクラス(javax.activation.DataHandler と javax.mail.internet.MimeMultipart)が見つかりません。Attachmentサポートが利用できません。/ [en]-(Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled.)
[main] DEBUG GoogleCorePlugin - start(BundleContext) - end
[main] DEBUG GoogleCorePlugin - getSpellingSuggestion(String, String) - start
[main] DEBUG GoogleCorePlugin - getSpellingSuggestion(String, String) - end
[main] DEBUG GooglePlugin - スペルミスの候補に変更します
[main] DEBUG GooglePluginTest - 返却された文字列: Eclipse
[main] DEBUG GooglePluginTest - testGetSpellingSuggestion() - end

 プラグインが呼び出されたときにGooglePreferenceInitializerのメソッドが呼ばれているのと、スペルチェックがされて候補の文字列に変更されているのが分かると思います。

おわりに

 今回は前回作成したcoreの部分を用いたGUI部分を作成しました(とは言ってもまだGoogleのスペルチェック機能をJUnitから呼べるようになっただけですが)。UIをともなうクラスのテストも、EclipseとJUnitを用いて実施できることもご理解いただけたのではないかと思います。また、プラグインの設定情報やそのデフォルト値を管理するIPreferenceStoreやorg.eclipse.core.runtime.preferences拡張ポイントも説明したほか、Eclipse標準の設定画面に自分のプラグインの設定画面を追加する方法も説明しました。

 次回はこれらのビジネスロジックを利用する、検索結果の一覧を表示するビューを作成します。

参考資料

  1. Google Code - Google's Developer Network
  2. Eclipse/プラグイン開発のTIPS集

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
Webサービスを利用したEclipseプラグインの作成連載記事一覧

もっと読む

この記事の著者

木野 雅富(キノ マサトミ)

2000年にシンクタンク系のSIerに入社後、サーバサイドJava開発やWEBサービスを利用したリッチクライアント開発など、さまざまな開発プロジェクトに携わる。2008年より株式会社プライムブレインズにて、システムコンサルタントとして従事。現在は会社作りも楽しんでいます!専門はJ2EEと最近はEcl...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/1368 2008/08/22 19:07

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー