Ответ 1
Google Collections zip содержит свои тесты. Там должен быть баннер google-collect-testfw.
В частности, существует абстрактный тест для общего договора карты.
У меня есть пользовательская реализация интерфейса Map, которая делает некоторые причудливые вещи, такие как ленивая оценка функций. реализация должна появиться неизменной после построения извне (например, не поддерживаются методы put() и putAll())
Мне кажется, он работает в самых основных условиях. Поскольку он довольно сложный, я уверен, что в нем должно быть множество скрытых ошибок w.r.t безопасности потоков, нерегулярного порядка операций и многое другое.
Так как контракт интерфейса карты четко определен, я уверен, что в нем должна быть общая коллекция тестов, которая проверяет угловые случаи, безопасность потоков и т.д.
Я слышал, что Google Collections запускает около 25000 модульных тестов для своей библиотеки. Можно ли их загрузить где-нибудь?
Google Collections zip содержит свои тесты. Там должен быть баннер google-collect-testfw.
В частности, существует абстрактный тест для общего договора карты.
Возможно, вам захочется увидеть, что Коллекции Google имеет то, что соответствует вашим потребностям, поэтому вам не нужно поддерживать свою собственную карту. См., Например, 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()
Если вам нужно написать пользовательскую реализацию карты и хотите найти подходящее место для ваших тестов, Адам предлагает использовать Google Collections MapInterfaceTest является хорошим.