第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)));
}
}
従来のアサーションメソッドより柔軟にテストが行えるようになりましたね。

