繁体   English   中英

java.util.Map的通用测试工具?

[英]Generic Test harness for java.util.Map?

我有一个Map接口的自定义实现,它做了一些奇特的东西,比如懒惰的函数评估。 从外部构造后,实现应该是不可变的(例如,不支持put()和putAll()方法)

我看起来它在最基本的条件下工作。 由于它非常复杂,我相信必须有大量潜在的错误,线程安全,不规则的操作顺序等等。

由于Map接口的合约定义明确,我确信必须存在一个通用的测试集合,用于检查角落情况,线程安全等。

我听说Google Collections为他们的库运行了大约25000个单元测试。 可以在某处下载它们吗?

Google Collections zip包含他们的测试。 那里应该有一个google-collect-testfw jar。

具体来说,有一个Map的一般合同的抽象测试。

您可能想知道Google Collections是否有满足您需求的内容,因此您无需支持自己的地图。 例如,请参阅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.get(key)将更改Map.entrySet()所看到的Map.entrySet()

如果您需要编写自定义Map实现并想要开始测试的好地方,Adam建议使用Google Collections的MapInterfaceTest是一个很好的建议。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM