2009-05-14 4 views
14

Mapインターフェイスのカスタム実装があります。これは、機能の遅延評価のような、すばらしいものです。外部からの構築後に実装が不変でなければなりません(例えば、put()メソッドやputAll()メソッドはサポートされません)。java.util.Mapの汎用テストハーネス?

ほとんどの基本条件で動作するようです。非常に複雑なので、スレッドの安全性、操作の不規則な順序など多くの潜在的なバグが存在するはずです。

マップインタフェースの規約は明確に定義されているため、コーナーケース、スレッドの安全性などをチェックする一般的なテストコレクション

私は、Google Collectionsがライブラリのユニットテストを約25000回実行していると聞いています。それらをどこかでダウンロードすることは可能ですか?

答えて

0

あなたはGoogle Collectionsは、あなたがあなた自身の地図をサポートする必要はありませんので、あなたのニーズを満たしている何かを持っているかどうかを確認したい場合があります。マップはあなたが必要な場合はMap.entrySet()

で見られるものに変化する以前に、目に見えないキーでmap.get(key)をやっているので、施工後の完全不変表示されないことを、例えば、MapMaker

private Map<Key, Graph> createMap() { 
    ConcurrentMap<Key, Graph> graphs = new MapMaker() 
    .concurrencyLevel(32) 
    .softKeys() 
    .weakValues() 
    .expiration(30, TimeUnit.MINUTES) 
    .makeComputingMap(
     new Function<Key, Graph>() { 
      public Graph apply(Key key) { 
      return createExpensiveGraph(key); 
      } 
     }); 
    return Collections.unmodifiableMap(graphs); 
} 

ノートを参照してください。カスタムMap実装を作成してテストを開始するには、Google CollectionsのMapInterfaceTestを使用するというAdamの提案が良い方法です。

+0

で、もう一方の値は丸められた値が与えられ、計算キー –

関連する問題