第80回 JUnit4 その8
引き続き「JUnit4」について学んでいきます。
今回はassertThatメソッドを学びます。
assertThatメソッドはJUnit4.4で追加されたアサーションメソッドです。
assertNullメソッドなどのように直接比較を行うのではなく、比較処理を引数で記述します。
 従来のアサーションメソッドに対する、assertThatメソッドのメリットは次の通りです。
・英文に近くなり、可読性が高い
 ・失敗時のメッセージの内容が理解しやすい
 ・比較処理を組み合わせることができる
 ・比較処理のカスタマイズができる
assertThatの比較用クラスの一つに、org.hamcrest.CoreMatchersクラスがあります。
 英文として理解しやすいisメソッド、全ての条件が正しくなければテスト失敗となるallOfメソッドなど有用なメソッドが実装されています。
では、今回はCoreMatchersクラスを使ったサンプルを実行してみましょう。
public class Sample {
     public static Object returnNull() {
         return null;
     }
     public static int returnOne() {
         return 1;
     }
     public static boolean isOne(int i) {
         return i == 1 ? true : false;
     }
     public static boolean returnTrue() {
         return true;
     }
     public static Object returnNewObject() {
         return new Object();
     }
}
import static org.hamcrest.CoreMatchers.*;
 import static org.junit.Assert.*;
 import org.junit.Test;
 import org.junit.runner.JUnitCore;
 public class SampleTest {
     public static void main(String[] args) {
         JUnitCore.main(SampleTest.class.getName());
     }
     @Test
     public void returnNull() {
         assertThat(Sample.returnNull(), nullValue());
     }
     @Test
     public void returnOne() {
         assertThat(Sample.returnOne(), equalTo(1));
     }
     @Test
     public void isOne() {
         assertThat(Sample.isOne(0), is(false));
         assertThat(Sample.isOne(1), is(true));
         assertThat(Sample.isOne(2), is(not(true)));
     }
     @SuppressWarnings("unchecked")
     @Test
     public void returnObject() {
         assertThat(Sample.returnNewObject(), allOf(notNullValue()
                                            , instanceOf(Object.class)));
     }
 }
従来のアサーションメソッドより柔軟にテストが行えるようになりましたね。

