JUnitを用いたテストコードの作成

JUnitを用いると、プログラムをmain以外から実行して、メソッドなど各部分の動作を確認することができる。JUnitでは、テストコードと呼ばれるJavaプログラムを作成します。

testコード用のフォルダの作成

テストコードは、被テスト側と別のフォルダに置く方が、のちのちプログラムをパッケージ化するときに都合が良い。この演習では、srcは通常のソースコード用、testはテストコード用とする。

プロジェクトの上で右クリック - Propertiesを開き、Java Build Path - Sourceタブを選択する:

Build Pathにtestフォルダを追加

Add Folderを選択し、testというフォルダを作成する。

JUnitテストの作成

例として、レポート課題5のGenomeSequenceクラスをテストするコードを作成する。

テストしたいクラスの上で右クリック - New - JUnit Test Caseを選択

テスト名の入力

必ず、Junit4テストを選択し、Source folderは testに変更する。変更したら、Nextをクリック。

テスト対象のメソッドを選択

必要に応じて

GenomeSequenceTest.java

作成されたテストコードを修正して、GenomeSequenceクラスの動作を確認するため、以下のようなテストコード書く。

import static org.junit.Assert.*;
import org.junit.Test;

public class GenomeSequenceTest {

  @Test
  public void testGenomeSequence() {
    GenomeSequence s = new GenomeSequence("ACGT");
  }

  @Test
  public void testGetSequence() {
    GenomeSequence s = new GenomeSequence("ACGT");
    assertEquals("ACGT", s.getSequence());
  }

  @Test
  public void testComplement() {
    GenomeSequence s = new GenomeSequence("ATGCGT");
    assertEquals("TACGCA", s.getComplement());
  }

  @Test
  public void testReverseStrand() {
    GenomeSequence s = new GenomeSequence("ATGCGT");
    assertEquals("ACGCAT", s.getReverseComplement());
  }
}

テスト

JUnit4では、@Testとマークのついたメソッドがテストコードとして実行される。JUnit3では、testで始まる名前をもったメソッドが使われる。

assert文

JUnitでは、テストの成否を判定するのにassertEquals, assertTrue, assertFalse, assertNotNullなどのメソッドを使う。

@Test
public void testReverseStrand() {
  GenomeSequence s = new GenomeSequence("ATGCGT");
  
  // s.getReverseComplement()の結果が "ACGCAT"ならテスト成功。第一引数が、正解の値
  assertEquals("ACGCAT", s.getReverseComplement()); 
}

JUnitの実行

テストコードの上で右クリック - Run As - JUnit Testを選択

実行結果

赤い表示になるときは、失敗したテストがある。

テスト対象のGenomeSequenceのコードを修正して、JUnitの結果がすべて緑になればOK.