0

の下にあるインターフェースの一部を返すメソッドをチェックする簡単なテストを書いていますCollection。このコレクションの内部表現を可能な限り抽象化しようとしているので、このテストは、メソッドが戻るときとの両方の場合に合格しListますSet

Set注文(LinkedHashSetまたはLinkedHashMap裏付けSet)されることになっているので、私も注文をテストする必要があります。だから一般的に私はこのようなテストを書きたいと思います:

assertThat(returnedList, containsOrdered('t1", "t2", "t3"));

これは、両方のコレクションが「同じ」でない場合(つまり、同じ順序で同じ値)に失敗します。

この場合、Hamcrestライブラリが役立つことがわかりましたが、ドキュメントに固執しています。どんな助けでもいただければ幸いですが、可能であれば、CollectionTestUtilや自分のHamcrestを書かMatcherないようにします。

4

2 に答える 2

1

JUnitにはorg.junit.Assertがあり、さまざまなタイプの複数の実装が含まれているassertArrayEqualsため、次のようなことができます。

    Collection<String> returnedList = new ArrayList<String>(); //Replace with call to whatever returns the ordered collection       
    Assert.assertArrayEquals(new Object[]{"t1", "t2", "t3"}, returnedList.toArray());
于 2012-04-06T13:18:15.267 に答える
1

もうすぐです。

assertThat(returnedList, contains("t1", "t2", "t3"))

それをします。と比較してくださいcontainsInAnyOrder

于 2012-04-06T21:14:55.313 に答える