第81回 JUnit4 その9
引き続き「JUnit4」について学んでいきます。
今回は前回と同じくassertThatメソッドを学びます。
前回、assertThatの比較用クラスとしてCoreMatchersクラスを使いました。
他に用意されているクラスとして、org.junit.matchers.JUnitMatchersクラスがあります。
JUnitMatchersクラスはコレクションの要素のチェック、文字列のチェックに適しています。
では、今回はJUnitMatchersクラスを使ったサンプルを実行してみましょう。
import java.util.Arrays;
import java.util.List;
public class Sample {
public static List toList(T... ts) {
return Arrays.asList(ts);
}
public static String returnHelloWorld() {
return "Hello World!";
}
}
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;
import static org.junit.matchers.JUnitMatchers.*;
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 toList() {
// リストに1が含まれるか
assertThat(Sample.toList(1, 2, 3), hasItem(1));
// リストに1と2が含まれるか
assertThat(Sample.toList(1, 2, 3), hasItems(1, 2));
// リストの全ての要素が1でないか
assertThat(Sample.toList(0, 3, 2), everyItem(is(not(1))));
}
@Test
public void returnHelloWorld() {
// 文字列に「Hello」が含まれるか
assertThat(Sample.returnHelloWorld(), containsString("Hello"));
// 文字列に「Hello」または「World」が含まれるか
assertThat(Sample.returnHelloWorld(), either(containsString("Hello"))
.or(containsString("World")));
// 文字列に「Hello」と「World」ともに含まれるか
assertThat(Sample.returnHelloWorld(), both(containsString("Hello"))
.and(containsString("World")));
}
}
CoreMatchersクラスと組み合わせることで、より簡単にテストが行えるようになりましたね。

