equipamento de teste genérico para java.util.Map?
-
21-08-2019 - |
Pergunta
Eu tenho uma implementação personalizada da interface do Mapa que faz algumas coisas extravagantes, como avaliação preguiçosa de funções. a implementação deve aparecer imutável após a construção a partir do exterior (por exemplo, não coloque () e putAll () métodos são suportados)
I parece que ele funciona em condições mais básicas. Uma vez que é bastante complexo, eu tenho certeza que deve haver toneladas de espreita erros w.r.t segurança do segmento, a fim irregular das operações e muito mais ..
Uma vez que o contrato da interface do Mapa é bem definida Estou certo de que deve existir uma coleção teste genérico que verifica angulares casos, a segurança do thread etc.
Ouvi dizer que o Google Collections corre cerca de 25000 testes de unidade para a sua biblioteca. É possível baixá-los em algum lugar?
Solução
O Google Collections zip contém seus testes. Deve haver um frasco google-collect-testfw lá.
Especificamente, há um teste abstrato para o contrato geral do Mapa. ??
Outras dicas
Você pode querer ver se Google Collections tem algo que atenda às suas necessidades assim você não tem que apoiar o seu próprio mapa. Veja, por exemplo, 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);
}
Note que o mapa não será exibido completamente imutável após a construção, uma vez fazendo um map.get(key)
com uma chave previamente invisível vai mudar o que é visto por Map.entrySet()
Se você precisar escrever um personalizado implementação Mapa e quer bom lugar para começar para seus testes, sugestão de usar do Google Collections MapInterfaceTest é uma boa.