2009-05-14 15 views
14

Tengo una implementación personalizada de la interfaz de Mapa que hace algunas cosas de lujo, como la evaluación de funciones perezoso. la implementación debe aparecer inmutable después de la construcción desde el exterior (por ejemplo, no se admiten los métodos put() y putAll())Arnés genérico de prueba para java.util.Map?

Parece que funciona en las condiciones más básicas. Dado que es bastante complejo, estoy seguro de que debe haber toneladas de errores al acecho, seguridad de hilos, orden irregular de operaciones y mucho más ...

Dado que el contrato de la interfaz del Mapa está bien definido, estoy seguro de que debe existir una colección de prueba genérica que verifica casos de esquina, seguridad de subprocesos, etc.

He oído que Google Collections ejecuta alrededor de 25000 pruebas de unidad para su biblioteca. ¿Es posible descargarlos en algún lugar?

Respuesta

0

Es posible que desee ver si Google Collections tiene algo que satisfaga sus necesidades por lo que no tiene que soportar su propio mapa. Véase, por ejemplo, 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); 
} 

Tenga en cuenta que el mapa no aparecerá completamente inmutable después de la construcción, ya que haciendo un map.get(key) con una clave previamente no vista va a cambiar lo que se ve por Map.entrySet()

Si necesita para escribir una implementación de Mapa personalizada y desea un buen lugar para comenzar las pruebas, la sugerencia de Adán de usar el MapInterfaceTest de Google Collections es buena.

+0

en mi caso, se da el valor de retorno, clave de cálculo –

Cuestiones relacionadas