第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 staticList 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クラスと組み合わせることで、より簡単にテストが行えるようになりましたね。