2016/06/26

[java]assertThat()はどのimportだ?

前回、assertThat()を書いたが、importに何も書かないとこうなる。

image

まあ、何かimportしてくれるのだろう、と思ってクリックすると、こうなる。

image

わ、私には選べない!


試したが、一番上の「MatcherAssert.assertThat」でよさそうだ。

import static org.hamcrest.MatcherAssert.assertThat;

ちなみに、is()だとこんなの。

image

これも「CoreMatchers.is」でよいみたい。

ただ、その下のIs.isを選んでもエラーにならないから、継承関係にあるのかな?

 

CoreMatchersクラスはこうだ。

public class CoreMatchers

Isクラスはこうだった。

public class Is<T> extends BaseMatcher<T>

BaseMatcherは、こう。

public abstract class BaseMatcher<T> implements Matcher<T>

 

MatcherAssert#assertThat()は、こう。

public static void assertThat(T actual, Matcher matcher)

Matcherクラスは、こうだ。

public interface Matcher<T> extends SelfDescribing

Matcherの血を引いているものであれば、assertThat()の第2引数にできるということか?
でも、CoreMatcherはMatcherの流れではないぞ。

 

などと間の抜けたことを思っていたが、is()はメソッドだから、戻り値だけでよいのだ。
CoreMatchers#is()は、こうだ。

public static <T> org.hamcrest.Matcher<T> is(T value)

上で「Matcherクラス」と書いてるものは、packageがorg.hamcrestだから、それだけのことだ。


さて、メソッド的な流れはなんとなくわかったというか、Android Studioの一番上を選んでおけばよいということがわかった。

気になったのは、org.hamcrestだ。
orgというからには、なんかの団体のはず。

Hamcrest

大きい画像はないのだが、拡大してみるとハムと果物がお皿に載ったような写真だ。
そしてハムが階段状に重ねられている上を、ナイフっぽいサーフィンボードのようなものの上に載った人が滑っているような画像だった。

 

なので、HamcrestのHamは、食べるハムなのだろう。
Java生まれで他の言語にも移植された、というようなことが書かれている。

よくわからないけど、ありがたく使おう。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。