assertThatって何だっけ?
久々にテストコード書くことになって、
色々忘れちゃってたので今度は忘れないようにメモしてきます。
今回のテーマは「assertThat」
なぜこれかというと、twitterでこの単語を見かけたけど、
「それ何だっけ?」と思ったからです(;´Д`)
assertThatとは?
JUnit4.4で追加されたアサーションメソッド。
今までは、assertEqualsやassertNullなど、比較するものによってメソッドを使い分けていたが、
assertThatでは、引数で何を比較するかを指定することができる。
(引用元:JUnit4 - TRANCE ARTS 技術情報Wiki)
同値チェック
今まで// assertEquals(期待値, 実行値);
assertEquals(3, 1 + 2);assertThatを使用
// assertThat(実行値, is(期待値));
assertThat(1 + 2, is(3));
assertThatを使うメリット
- コードの可読性が高くなるhamcrest の CoreMatchers 詳細 - A Memorandum
- →「assertThat」の引数が英語の文章のようになるため(assertThat("A", is("A")))
- アサーションエラーメッセージが分かりいやすい
- アサーション条件処理を独自に作成することが可能になる
あと、比較処理のバリエーションが凄く増えたと思う。(知らないだけかもだけど
他のアサーションメソッドは、全部assertThatで置き換えれるようなので、
これからは全部assertThatで書こうと思います(*`ω´)ノ
org.hamcrest.Matcher
assertThatの第2引数に指定してるのは、org.hamcrest.Matcherとかいう型です。
org.hamcrest.Matcherの他に、org.junit.matchers.JUnitMatchersとかあるみたいですが、
よく使うのは、Junit4.4に同梱されてる「org.hamcrest.CoreMatcher」なので、まずはこれを覚えましょう。
hamcrest の CoreMatchers 詳細 - A Memorandum
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;
↑こんな感じでAssertとMatcherは入力楽に、見た目さっぱりさせるために、static importして使いますが、
Matcherので*使うのは、mockitoのstatic importと併用した時に識別子名が被るかもなので注意だそうです。
(参考:hamcrestのMatcherメモ - 都元ダイスケ IT-PRESS)
ひとこと
assertEquals(理論値, 実行値)
が正しいんですね。。理論値と実行値を逆にしてましたごめんなさいm(_ _)m