1. ホーム
  2. java

ハムクレストで複数の正しい結果(or-matcherはあるのか?)

2023-07-08 19:03:04

質問

私はマッチャーに比較的慣れています。私は ハムクレスト をJUnitと組み合わせて遊んでいるのですが、ちょっと気に入っています。

複数の選択肢のうち、どれかが正しいことを表明する方法はありますか?

以下のようなものです。

assertThat( result, is( either( 1, or( 2, or( 3 ) ) ) ) ) //does not work in hamcrest

私がテストしているメソッドは、コレクションの1つの要素を返します。リストは複数の候補を含むことができます。私の現在の実装では、最初のヒットを返しますが、それは要件ではありません。私は、可能な候補のいずれかが返された場合、私のテストケースが成功するようにしたいです。あなたはこれをJavaでどのように表現しますか?

(私はhamcrest-alternativesにオープンしています)

どのように解決するのですか?

assertThat(result, anyOf(equalTo(1), equalTo(2), equalTo(3)))

から Hamcrestチュートリアル :

<ブロッククオート

anyOf - マッチャーがマッチした場合、短絡的にマッチする(Java ||のように)。

参照 Javadoc .

さらに、独自の Matcher を書くことも可能で、これは非常に簡単です。