Domanda

Ho un'implementazione personalizzata dell'interfaccia mappa che fa un po 'di cose di fantasia, come la valutazione pigra di funzioni. l'attuazione dovrebbe apparire immutabile dopo la costruzione dall'esterno (per esempio senza put () e putAll () metodi sono supportati)

Mi sembra che funziona nelle condizioni più elementari. Dal momento che è abbastanza complesso, sono sicuro che ci deve essere un sacco di bug in agguato w.r.t sicurezza dei thread, l'ordine delle operazioni irregolari e molto altro ancora ..

Poiché il contratto dell'interfaccia mappa è ben definito io sono sicuro che ci deve essere una raccolta di test generico che controlla angolari casi, la sicurezza dei thread, ecc

Ho sentito dire che Google Collezioni gestisce circa 25.000 unit test per la loro biblioteca. E 'possibile scaricare da qualche parte?

È stato utile?

Soluzione

Il Google Collezioni zip contiene i loro test. Ci dovrebbe essere un barattolo di google-collect-testfw in là.

in particolare, c'è un test astratta per il contratto generale di Map.

Altri suggerimenti

Si potrebbe desiderare di vedere se Google Collezioni ha qualcosa che soddisfi le vostre esigenze in modo da non dover sostenere la tua mappa. Si veda, ad esempio, 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);
}

Si noti che la mappa non apparirà completamente immutabili dopo la costruzione, dal momento che facendo un map.get(key) con una chiave precedentemente non visto cambierà ciò che si vede da Map.entrySet()

Se avete bisogno di scrivere un'implementazione mappa personalizzata e vuole buon punto di partenza per i test, il suggerimento di Adam di utilizzare Google Collezioni MapInterfaceTest è un buon compromesso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top