nekop's blog

OpenShift / JBoss / WildFly / Infinispanの中の人 http://twitter.com/nekop

Java Day Tokyo 2014でテストのお話

Java Day Tokyo 2014で「Javaアプリケーション開発におけるテストとTDDの実践」というセッションを@t_wada@shuji_w6e@nekopの3人共演でやりました。講演中はいっぱいいっぱいなのであまりまわりの状況がよく見えていなかったのですが、250人の部屋が満席立ち見という状態になっていたみたいです。ありがとうございます。

こんな大規模なイベントを参加費無料かつすばらしい設備の会場でやるというのはとてもすごいことだと思います。OracleさんのJavaに対する姿勢が見えますね。ありがとうございました。

自分は統合テスト自動化というトピックで、より本物に近い環境でテストすることの重要性とか、Arquillianイイヨー、統合テストのコスト下げられるよー、楽しいよー、ってお話をしました。スライドは以下のURLで公開しています。

http://nekop.github.io/slides/Arq.html

これからArquillianを触ってみようという人も多いと思うので、以下のJava EE + ArquillianのMavanの最小POMサンプルを作ったときに調べたことなどをざらざらと書いておきます。

https://github.com/nekop/java-examples/tree/master/maven

  • ArquillianはBOMがあるのでそれを使う、junit or testngdep追加
  • BOMとは何かとか使い方とかはこちら
  • JBossjboss-javaee-7.0-with-toolsなどのBOMもあるけど中身のバージョンが現時点ではちょこちょこ古いので利用しない
  • javax:javaee-apiのjarはテストには使えないので注意
  • JBossJava EE APIのBOMがあり、個別の仕様をdepに書くことで依存の最小化ができるけど、個別に書く意味もあまりないので、BOMとしてではなくdepchainとして直接depにする
  • depchain POMは、A、B、C、Dという大抵一緒に使われるという性格のライブラリ群があるようなときに、それを一つのプロジェクトのdepとしてまとめてしまい、使う側はdepchain一つだけdepに書けばいいよね、ってできるPOMのこと。Java EEAPIなどはまさにこれ。
  • ShrinkWrap(デプロイメントを作るパッケージライブラリ)はShrinkWrap Resolverで用意されているdepchainをdepにすれば全部使えるようになっている
  • Recorderのスクリーンショット機能はRecorderのドキュメントにあるとおりarquillian-recorder-reporter-implをdep
  • Recorderのビデオ機能はarquillian-desktop-video-recorderdep

最後に紹介したRecorderのスクリーンショットやビデオはRecorderのドキュメントからリンクされているHTMLレポートから見ることができます。名前を呼んではならないアンドロなんとかという携帯電話と、ふつうのPC上のWebブラウザとの相互インタラクションテストを記録したビデオもあります。セッション中には紹介しませんでしたがArquillian Droidiumという拡張機能もあります。どんな拡張機能かは名前から察してください。

あとはもうちょっといろいろな例がJava EE 7 Samplesというプロジェクトにあるので、こちらも参考にどうぞ。

https://github.com/javaee-samples/javaee7-samples

イベント前日にPC持ってリハーサル行ったら僕のラップトップのプロジェクタ出力がダメダメで全然まともな出力にならなくてテストって大事だなー、って思いました。本番の僕の資料は和田さんのMacで表示していました、ありがとうありがとう。

言及してくれている記事: