EeBlog(テクニカルブログ)

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