SHOEISHA iD

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

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

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

Javaで軽快に使える「軽量フレームワーク」特集

Javaで軽快に使える「軽量フレームワーク」特集
~本格的なRoRスタイルフレームワーク「Play!」(3)

第9回

addにアクセスしPOST送信するテスト

 では、SeleniumTestを行ってみましょう。一般的なページアクセスはサンプルで分かるので、ここでは“/add”にアクセスし、フォームを送信してMsgDataを追加する処理を行わせてみることにしましょう。Application.test.htmlの末尾に、次のようにタグを追記してください。

#{fixture delete:'all', load:'data.yml' /}

#{selenium}
	open('/add')
	waitForPageToLoad(1000)
	type('name','tuyano')
	type('message','*** this is selenium test.***')
	clickAndWait('submit')
#{/selenium}
SeleniumTestを実行する。1つ1つの実行結果が表示される
SeleniumTestを実行する。1つ1つの実行結果が表示される

 ここでは、typeclickAndWaitというものを利用しています。typeは、指定したidのコントロールにテキストをタイプするもので、clickAndWaitは指定したidのコントロールをクリックするものです。これにより、/addに表示されたフォームにテキストをタイプして送信する処理を行わせています。

 テストが正常に完了したら、トップページに戻ってMsgDataの内容を確認してみましょう。SeleniumTestで/addから送信されたデータが、ちゃんとMsgDataインスタンスとして作成され保存されていることが分かります。

トップに戻ってみると、SeleniumTestで/addにPOSTしたデータがモデルとして作成されていることが分かる
トップに戻ってみると、SeleniumTestで/addにPOSTしたデータがモデルとして作成されていることが分かる

まとめ

 今回は、複数のモデルを連携する際の基本的な考え方と、JUnitベースのテストについて説明しました。複数のモデルを連携させる場合、SQLによるJOINに慣れてしまっていると、どうも勝手が違い戸惑うかもしれません。しかし、データベースではなく「Javaのオブジェクトとしてすべてのデータは保管されている」と考えれば、Javaプログラマにとって非常になじんだ考え方ですべてを処理できることに気が付くはずです。

 またテストについては、一般的なUnitTest/FunctionalTestの他、SeleniumTestが用意されているのがPlay!の大きな特徴と言えるでしょう。これにより、アクセスしたページを操作させてテストを行うことが可能となります。Webアプリケーションの場合、アクセスして表示されたページのフォームを送信するなどして動作を確認することが重要です。SeleniumTestを使えばそれが非常に簡単に行えます。

 いずれも、ある程度の規模の開発で必要となる重要な機能といってよいでしょう。MVCのフレームワークは、基本となるMVCの部分は比較的似通った概念や設計となっていることが多いのですが、こうした個々の具体的な機能になるとずいぶんと違いが現れ、それぞれのフレームワークの性格が如実に現れてきます。モデルの扱いやテストは「Play!らしさ」を実感できる部分かもしれません。

 今回まで3回にわたってPlay!の開発の基本を説明してきましたが、「Play!の開発スタイルがどういうものか」がだいぶ見えてきたのではないでしょうか。RoR的な高速開発をJavaで行おうとすると、選択肢は限られてきます。Play!は、非常に魅力的な選択肢の1つと言えるでしょう。実際に使ってみて、どれだけ短時間にまとまったプログラムを作り出すことができるか、ぜひ一度体験してみてください。

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

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
Javaで軽快に使える「軽量フレームワーク」特集連載記事一覧

もっと読む

この記事の著者

掌田 津耶乃(ショウダ ツヤノ)

三文ライター&三流プログラマ。主にビギナーに向けたプログラミング関連の執筆を中心に活動している。※現在、入門ドキュメントサイト「libro」、カード型学習サイト「CARD.tuyano.com」を公開...

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/4752 2010/02/04 14:00

イベント

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

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

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

メールバックナンバー