3

このマッチャーは、マッチャーのコレクションをチェックし、それらがすべて成功した場合に成功します。

署名は次のとおりです。

public static <T> Matcher<T> allOf(Iterable<Matcher<? extends T>> matchers)

なぜこれはイテラブルを取るのですか
     Matcher<? extends T>

そしてそうではない
     Matcher<? super t>

それがそのまま正しい場合は、説明してください。

タイプは、一致する (テストされる) オブジェクトから推測されるため、一致するオブジェクトまたはそのスーパークラスと互換性のあるマッチャーを iterable が保持することが期待されます。同様に、サブクラスとのみ互換性のあるマッチャーを iterable に保持させるのは間違っているようです。

4

1 に答える 1

4

(自分の質問に答える)

私の悪い点 - 誤って古いバージョンを使用していました。これは、2007 年に Hamcrest 1.2 で修正されました。しかし、古い「拡張」バージョンは、2012 年 12 月にリリースされた JUnit 4.11 まで JUnit に含まれていました。

于 2012-05-25T16:08:47.147 に答える