Javaプログラミング/サーバサイド&ケータイJava

テストって、なに?(5ページ目)

Eclipseに内蔵されている「JUnit」で、単体テストを行ってみましょう。

執筆者:掌田 津耶乃

テスト用メソッドを使ってテストを行なう


では、これにテスト用のメソッドを追加してみましょう。ここでは、例として「test」というテスト用メソッドを用意してみます。

package jp.tuyano;

import org.junit.Before;
mport org.junit.Test;

public class SampleAppTest {

  @Before
  public void setUp() throws Exception {
  }
  
  @Test
  public void test() {
    // ここに処理を書く
  }
}


こんな感じになります。見ればわかるように、テスト用のメソッドといっても、ただの返値がvoidで引数のないpublicなメソッドですね。ただし、その前に「@Test」というものがついています。これが実は、非常に重要なのです。JUnit 4では、この@Testというものがあると、それ以降のメソッドを自動的にテスト用のメソッドとみなしてテスト時に実行するようになっているのです。

ここでは「@Before」とか「@Test」とか、なんだか見慣れないものが登場しています。これらは「アノテーション」と呼ばれるものです。これはJava5よりサポートされたもので、ソースコードの中に記述される、コードでもなくコメントでもない、第3の要素となるものです。アノテーションは、コードに付随する各種の情報を与えるのに用いられるもので、JUnit 4ではメソッドの性質や役割などを示すものとしてアノテーションが用いられています。JUnit 4では、あらかじめ「@Beforeの後にあるのは事前処理のメソッド」「@Testの後にあるのはテスト用のメソッド」ということが決められており、これらのアノテーションをメソッド前に記述することで、それらのメソッドの役割を特定できるようになっているのですね。

というわけで、この@Testの後にあるtestメソッドにテスト用の処理を書けば、テストが実行されるようになります。サンプルとして、ごく単純なテストの処理を用意してみることにしましょう。

package jp.tuyano;

import org.junit.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Random;

public class SampleAppTest {
  SampleApp sampleapp;

  @Before
  public void setUp() throws Exception {
    sampleapp = new SampleApp();
    sampleapp.setVisible(true);
  }
  
  @Test
  public void test(){
    sampleapp.field.setText("1234");
    ActionEvent ev = new ActionEvent(sampleapp.button,
        ActionEvent.ACTION_PERFORMED,"action");
    sampleapp.buttonAction(ev);
    try {
      Thread.sleep(3000);
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
  }
}


テスト後にすぐに終了すると結果がわかりにくいので、最後にThread.sleepで少し待たせるようにしてありますが、これは不要なら削除してください。――ここでは、setUpのところであらかじめSampleAppを作成しておきます。そしてテストメソッドのところで、sampleapp.fieldにサンプルとして"1234"とテキストを設定し、それからsampleapp.buttonActionメソッドを呼び出して処理を実行させています。

このテスト・メソッドを使ってテストを行ってみましょう。SampleAppTest.javaを開いた状態で、<実行><実行><JUnitテスト>メニューを選んでください。SampleAppTestがJUnitによって実行され、SampleAppにtestメソッドを使ってテストを実行します。テストが問題なく終了すると、「JUnit」ビューに緑色のバーが表示され、プログラムが終了します。問題があると、「JUnit」ビューに赤や青のバーが表示され、例外が表示されたり、下の「障害トレース」にトレースされた地点が表示されたりします。

実際に何回か実行してみれば、testメソッドに書かれた処理が実行され、SampleAppの動作(ここではbuttonActionメソッド)が正常に動いていることをチェックしていることがわかってくるでしょう。仕組みがわかったら、例えばampleapp.field.setTextを乱数で変更するなどアレンジしてみるとよりテストらしくなりますね。

まぁ、実際のところ、ここであげたサンプルのように、直接的にメソッドを呼び出してチェック!というような使い方でチェックできる場合とできない場合があるかと思います。が、テストと本プログラムの関係のようなものは、なんとなくわかってくるんじゃないでしょうか。


  • 前のページへ
  • 1
  • 4
  • 5
  • 6
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます