【コラム】
Java SE 5.0 TigerのコアAPIで使用されているアノテーションは@Deprecatedを含め、必要最小限なものでしかない。アノテーションを使ったプログラミングをおこなうには、アノテーションタイプを作成し、アノテーションを処理するクラスを作成しなければならない。標準でより多くのアノテーションが用意されるのは、次期リリースが予定されているJava EE 5.0やJava SE 6.0 Mustang、Java SE 7.0 Dolphin以降になる見通しだ。
アノテーションを使ってどのようなことができるのか、アノテーションがもたらす効果はどういったものなのかといったことは、採用事例を見ていく方法が一番効果的だ。Java SE 5.0 Tigerに用意されているコアAPIではアノテーションが活用されていないため、コアAPI以外にいくつかのアプリケーションを取り上げて、それらが実装しているアノテーションの効果を紹介していく。
JavaのテストフレームワークのひとつにTestNGがある。有名なテストフレームワークとしてはほかに JUnitやNUnitがある。なかでもJUnitが有名で、実質的にデファクトスタンダードの立場にある。しかしJUnitは、バージョンアップとともに複雑になりすぎてしまった。この事実に対するアンチテーゼとして開発されたテストフレームワークがTestNGである。
システム規模が大きくなればなるほど、テストフレームワークの導入は欠かせないものになる。テストフレームワークを導入し試験工程を自動化することによって、テストにかかる手間を大幅に削減することができる。
試験工程自身はソースコードに対して横断的に実施したい内容だから、手法としてはアスペクト指向的な取り組みになる。本来のコードには影響を与えることなく、試験コードを挿入したいということだ。TestNGではその仕組みの要としてアノテーションを使っている。実際の例を通して、どのようにアノテーションが使用されているかをみていこう。
本稿では、11月29日(米国時間)に公開されたTestNG version 4.3を使用する。TestNGの最新版はTestNGのサイトからダウンロードすることができる。
ダウンロードしたファイルを展開すると、testng-4.3-jdk15.jarおよびtestng-4.3-jdk14.jarといったjarファイルが現われる。それぞれJava 5.0用およびJava 1.4用のjarファイルだ。
本稿ではJava SDK 5.0を使った例を紹介する。TestNGはSDK以外にも、Eclipse、IDEA、Maven、Antなどと統合して使用することができる。統合開発環境やビルドツールとともに使用する方法はTestNGのドキュメントをご覧いただきたい。
TestNGテストフレームワークの簡単な使用例をTestExample.javaに示す。試験を行うメソッドとしてtestAおよびtestBが用意されている。そしてそれらのメソッドにはそれぞれaおよびbという値が設定されている。
従来のテストフレームワークであれば、試験用のメソッドを実装するか継承するか、または外部の設定ファイルにおいて試験用のメソッドを明示する必要があった。TestNGはアノテーションを活用することでこれを簡素化している。基本的には@Test アノテーションを指定しておけば、対象のメソッドは試験用のメソッドとしてTestNGによって扱われるようになる。
メソッドを実行する順序、事前に実行していく必要があるメソッドの指定や、試験メソッドの動作タイミングなども、同様にしてアノテーションで記述できる。動作を設定ファイルに分離する方法や、インタフェースを継承する方法、クラスを継承する方法に比べて、アノテーションを使う方法は簡単でわかりやすい。
ちなみに試験工程の実行結果はリスト2のようになる。TestNGは試験結果をtest-outputというディレクトリにHTMLファイルとして作成する。作成されたHTMLファイルの例を図1に示す。
使ってみると、実に簡単なことがわかる。もし同様の作業をアノテーションを使わずに行うとすると、従来のJavaの規則に従った複雑なものになるか、または言語的な保証はなくなるが、制約を順守するというプログラマの行動に信頼をおいた仕組みにするかのどちらかになる。アノテーションを使うと、言語的に動作を保証しつつ、簡単に手段を提供できていることがわかる。
TestNGの使い方を紹介する連載ではないため、説明は省くが、上記実行結果を得るために使ったファイルを示しておく。
TestNGは統合開発環境やビルドツールと連携して使うこともできるし、それ単体で使うこともできる。リスト3は単体で使用する場合の方法をまとめたMakefileだ。コマンドラインオプションで動作させる方法と、XML設定ファイルを使用する場合の両方をまとめてある。
リスト4がXML 設定ファイルを使用する場合のXML設定ファイルの例だ。ここではa, bともに使用する場合の例を掲載してある。XML設定ファイルで注意するべきは、groupsとclasses要素に順序があるということだ。 classes用途よりも前にgroups用途を書いておかなければならない。これは実装上のバグというかただ実装していないだけだと思うが、 TestNG version 4.3には存在する点なので注意しておこう。
端的にまとめれば、メソッドに@Testを指定しておけば、TestNGによる試験工程を実現できる、ということになる。アノテーションの簡単な使用例だが、どのように使用されているかというよい一例である。
| 理研、脳・脊髄形成に必要な神経板湾曲の仕組みを解明 [20:16 5/25] |
| 京大、「慢性閉塞性肺疾患」患者の労作時呼吸困難は鍼治療が有効と実証 [20:08 5/25] |
| 120Hz SHVカメラ用イメージセンサーを使った撮像装置 - SHVフルスペック化へ [18:10 5/25] |
| 京大、視覚による物体認知は前頭前野からのトップダウン信号が重要と確認 [17:45 5/25] |
| 製品数の拡大だけでなくBCPの展開なども含めた総合力で事業の強化を図るTI [17:25 5/25] |
|
【ネタバレもありの徹底解明コラム】『サザエさん』タマの意外な事実 [17:30 5/27] ホビー |
|
鍼灸(しんきゅう)師が教える。オフィスで口臭予防ツボ・ベスト3 [17:00 5/27] キャリア |
|
[梶浦由記]米「アニメ・エキスポ」に2度目の参加決定 [17:00 5/27] ホビー |
|
【連載】これだけは要チェック! TOEIC(R)単語帳 第107回 今回のお題は…「chemical」 [17:00 5/27] キャリア |
|
[乃木坂46]キャプテン桜井が“ライバル”AKB総選挙予想 1位まゆゆ、2位はさしこ、3位たかみな [16:58 5/27] ホビー |
4つの診断で、自分の適性を見つめなおそう!
働くこと・挑戦し続けることへの思いを綴ったインタビュー
あなたにピッタリのアドバイスを読むことができます。
転職に必要な情報が収集できます
企業からアプローチのメッセージが届きます。