【コラム】

ライトニングJava

32 アノテーション(7) - 採用事例 TestNG(4)

    後藤大地  [2006/01/16]

    これまで3回にわたってTestNGのアノテーションについて紹介した。今回は、これまで紹介したTestNGのアノテーションをまとめ、TestNGアノテーションの効果についてまとめる。

    @Test

    @Testは、試験用メソッドであることを指定するアノテーション。@Testが指定されたメソッドは、TestNGからみて試験用のメソッドであると判定され、試験の実行に使われる。TestNGで用意しているアノテーションのうち、もっとも中心的な役割を担う。

    リスト1 指定したメソッドはTestNGによって試験用メソッドとして扱われる

    @Test
    public void test() { }

    リスト2 指定したメソッドはTestNGによって試験用メソッドとして扱われ、かつグループaに所属する

    @Test(groups={"a"})
    public void testA() { }

    リスト3 指定したメソッドはTestNGによって試験用メソッドとして扱われ、かつグループbに所属する

    @Test(groups={"b"})
    public void testB() { }

    リスト4 指定したメソッドはTestNGによって試験用メソッドとして扱われ、かつ実行が100msで終わらなかった場合にはタイムアウトする

    @Test(timeOut = 100)
    public void test() { }

    @Testでは、引数を指定することで、メソッドのグループ化、メソッドのタイムアウトの指定を行うことができる。メソッドの依存関係をdependsOnMethodsを使って設定することもできる。すべてのアノテーションの指定で済み、プログラミング用のソースコードを追加する必要はない。

    @Configuration

    @Configurationは、実行時のタイミングを指定するアノテーション。試験用のメソッドを実行する場合、試験用メソッドを実行するまえに実行するべき処理や、実行後に実行するべき処理がある。@Configurationアノテーションを使って、前後に必要になる処理を指定し、実行させる。

    リスト5 試験メソッドを実行するまえに実行するメソッド

    @Configuration(beforeTest = true)
    public void before() { }

    リスト6 常に実行するメソッド

    @Configuration(alwaysRun = true)
    public void allways() { }

    @Configurationにおいて指定できるタイミングはalwaysRun、beforeSuite、afterSuite、beforeTest、afterTest、beforeTestClass、afterTestClass、beforeTestMethod、afterTestMethodなど。

    @Parameters

    @Parametersは、メソッドの引数を指定するためのアノテーション。@Parametersによって指定された引数は、設定ファイルやコマンドラインから引数を指定して実行することができる。

    リスト7 引数が1つの場合

    @Test
    @Parameters({"param"})
    public void test(String aParam) { }

    リスト8 引数が2つの場合

    @Test
    @Parameters({"param1", "param2"})
    public void test(String aParam1, String aParam2) { }

    @Parametersを使うことで、試験コードから引数に指定する値を抜き出すことができ、耐久試験を別の枠組みとして実行することができる。

    効果

    TestNGで提供されている代表的なアノテーションは次の3つ。特によく使うアノテーションは@Testだ。

    • @Test
    • @Configuration
    • @Parameters

    前述した例をみればわかるように、TestNGとして指定しているソースコードはすべてアノテーションであり、アノテーションの域を出ていない。つまり、本来のソースコードには何ら影響を与えることなく、試験用フレームワークの導入を実現している。

    これがアノテーションのもたらす、もっとも重要なポイントだ。本来必要となる処理を記述したソースコードには手を加えることなく、目的とする機能の挿入に成功している。

    Java技術者に求められる技量

    Java EE 5以降で本格的に導入されるアノテーションによって、EJB 3を使ったJava EE 5は大きな変貌を遂げる。ここで紹介したように、多くのアノテーションが使われるようになる。EJB 2までの複雑さに対するアンチテーゼであるように、EJB 3で実現される各種機能は、アノテーションを使って簡単に実現という点を強調してくる。

    これからのJava技術者は、アノテーションを使う必要がでてくる。Javaで提供されるCore APIにおけるアノテーションの採用は増えるだろうし、サードパーティが提供するフレームワークやライブラリはさらにアノテーションを使うことになる。

    さらに、一歩踏み込んでフレームワークを開発するJava技術者は、設計の段階で意味ごとに領域を分割し、アノテーションを活用する技術が求められる。良かれ悪かれ、Java技術者はアノテーションを理解する必要があるという状況だ。

    提供:毎日就職ナビ

    会員登録はこちら

    学生のための就職情報サイト「毎日就職ナビ」。5,000社以上の新卒採用情報が常時掲載され、社内の雰囲気が伝わる情報画面、さまざまな項目での会社検索、エントリーや説明会検索など、機能も充実。無料適職診断、就活Q & A、エントリーシート添削講座など、就職活動に役立つ記事も満載です。研究者、エンジニアを目指す学生の方々も是非エントリーしてください。お待ちしています!

    毎日コミュニケーションズ 就職情報事業本部はプライバシーマークを取得しています。

    新着記事

    特設サイトの情報

      求人情報

      人気記事

      一覧

      イチオシ記事

      新着記事

      特別企画

      転職ノウハウ

      あなたの仕事適性診断

      4つの診断で、自分の適性を見つめなおそう!

      Heroes File ~挑戦者たち~

      働くこと・挑戦し続けることへの思いを綴ったインタビュー

      はじめての転職診断

      あなたにピッタリのアドバイスを読むことができます。

      転職Q&A

      転職に必要な情報が収集できます

      スカウト転職する

      企業からアプローチのメッセージが届きます。

      マイナビニュースマガジン