2012-04-06 8 views
0

私はCollectionの下のインタフェースのいくつかを返すメソッドをチェックする簡単なテストを書いています。私は可能な限りこのコレクションの内部表現を抽象化しようとしているので、このテストは両方の場合に渡されます:メソッドがListSetを返すとき。注文とコレクションの等価性を比較する

は、(LinkedHashSetまたはLinkedHashMapにバックアップされたSet)注文されているので、私も注文をテストする必要があります。だから、一般的に私はこのようなテストを書きたいのです:両方のコレクション場合に限っ失敗します

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

は「同じ」(同じ順序で、すなわち同じ値)ではありません。

この場合、Hamcrestライブラリが役立つことがわかりましたが、私はそのドキュメントに固執しています。何か助けていただければ幸いですが、私はCollectionTestUtilまたは私自身のHamcrest Matcherを書くことは避けようとします。

Collection<String> returnedList = new ArrayList<String>(); //Replace with call to whatever returns the ordered collection  
    Assert.assertArrayEquals(new Object[]{"t1", "t2", "t3"}, returnedList.toArray()); 

答えて

1

あなたはほとんどそこにいる:

+0

このパッケージには完全なパッケージとクラスパスを含めることができますか? JUnitやHamcrestからassertThatを使っていますか?何か違いはありますか? –

+0

私はhamcrest-all依存関係を引き出していたので、間違ったバージョンのhamcrestライブラリを持っていました。私はそれをjunitの重複した問題と一緒に修正しました(hamcrestを提供しないjunit-dep artifactがあるので、完全なhamcrestサポートを追加する可能性があります)。ご協力いただきありがとうございます –

1

JUnitはあなたのような何かができるよう、さまざまなタイプのために複数のassertArrayEquals -implementationsが含まれているorg.junit.Assertを持っています。

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

となります。 containsInAnyOrderと比較してください。

+0

はい、これは私が考えていた(コレクションではなく配列を比較する)代替方法です。別の方法が失敗した場合は、この方法を使用します。 –

関連する問題