EeBlog(テクニカルブログ)

第78回 JUnit4 その6

引き続き「JUnit4」について学んでいきます。

今回はJUnit4でのパラメータを使ったテストについて学びます。

JUnit4では、1つのテストメソッドに対し、複数のパラメータを使ってテストできます。
入力値によって期待値が異なるメソッドのテストに便利な仕組みです。

パラメータを使ってテストをする場合、テストクラスで以下の1~5を行う必要があります。
1.テストクラスに@RunWith(Parameterized.class)を付加する。
2.パラメータを用意するstaticメソッドを作成し、@Parametersを付加する。
3.入力値や期待値を格納するフィールドを作成する。
4.用意したパラメータをコンストラクタで受け取り、3で作成したフィールドに格納する。
5.テストメソッドの入力値や期待値に3のフィールドを使う。

では、実際にパラメータを使ってテストしてみましょう。

public class Sample {


     public static boolean isOne(int i) {
         return i == 1 ? true : false;
     }
 }
 import static org.junit.Assert.assertEquals;


 import java.util.Arrays;
 import java.util.Collection;


 import org.junit.Test;
 import org.junit.runner.JUnitCore;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
 import org.junit.runners.Parameterized.Parameters;


 @RunWith(Parameterized.class)
 public class SampleTest {


     private int input;
     private boolean expected;


     public SampleTest(int input, boolean expected) {
         this.input = input;
         this.expected = expected;
     }


     public static void main(String[] args) {
         JUnitCore.main(SampleTest.class.getName());
     }


     @Parameters
     public static Collection parameters() {
         return Arrays.asList(new Object[][] { { 0, false }, { 1, true }, { 2, false }, });
     }


     @Test
     public void isOne() {
         assertEquals(expected, Sample.isOne(input));
     }
 }

1つのテストメソッドに対して、テストが3回行われているのが確認できますね。