2017-07-18 11 views
3

2つのLinkedHashSetsの要素の順序が同じかどうかをテストするJunitテストを作成しようとしています。 follwoingは私の既存のコードです:私は反対bが、それは、D、Cを比較して与える場合でもLinkedHashSetの注文のJunitテスト

Assert.assertEquals(
      Sets.newLinkedHashSet(Arrays.asList("a","d","c","b")), 
      conf.getSetInfo() 
    ); 

このテストが成功し、B、C、Dひいては要素の順序を考慮しません。 注文に基づいてアサートする方法を教えてください。

+0

@Tim C'monになりました。 _同一の反復順序をアサートする場合は、両方の反復をリストにコピーしてリストを比較することができます._あなたは 'LinkedHashSet'と' LinkedHashMap'について話していますか? –

+0

**あなたの** LinkedHashSetの実装について話していない限り、あなたに与えられた宿題:あなたのものではない実装をテストすることはありません。言い換えれば、なぜ組み込みのAPIを検証する必要があると思いますか? – GhostCat

答えて

4

リストを比較すると、要素の順序が考慮されます。したがって、元のLinkedHashSetをアサーションの目的でListに変換するだけです。

List<String> expected = Arrays.asList("a", "d", "c", "b");   
Assert.assertEquals(
    expected, 
    new ArrayList<>(conf.getSetInfo()) 
); 

LinkedHashSetのは、(保証繰り返し順序を持つ1はあるが)設定されているので、順序はそのequals()実装では無視されます。 Further reading