2009-05-14 4 views
14

Ho un'implementazione personalizzata dell'interfaccia Map che fa alcune cose di fantasia, come la valutazione lazy delle funzioni. l'implementazione dovrebbe apparire immutabile dopo la costruzione dall'esterno (ad esempio non sono supportati i metodi put() e putAll())Cablaggio di test generico per java.util.Map?

I sembra che funzioni nelle condizioni più elementari. Dal momento che è piuttosto complesso, sono sicuro che ci devono essere tonnellate di bug in agguato per sicurezza dei fili, ordine delle operazioni irregolari e molto altro ..

Poiché il contratto dell'interfaccia Mappa è ben definito, sono sicuro che deve esistere una raccolta di test generica che controlla casi d'angolo, sicurezza del filo ecc.

Ho sentito dire che Google Collections esegue circa 25000 test unitari per la loro libreria. È possibile scaricarli da qualche parte?

risposta

0

Si potrebbe desiderare di vedere se Google Collections 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); 
} 

notare 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 viene visto da Map.entrySet()

Se avete bisogno per scrivere un'implementazione cartografica personalizzata e avere un buon punto di partenza per i test, il suggerimento di Adam di utilizzare il numero MapInterfaceTest di Google Collections è buono.

+0

nel mio caso è il valore restituito, chiave di calcolo –