문제

기능의 게으른 평가와 같은 멋진 작업을 수행하는 맵 인터페이스의 사용자 정의 구현이 있습니다. 구현은 외부에서 건설 후에 불변으로 표시되어야합니다 (예 : put () 및 putall () 메소드가 지원됩니다)

나는 그것이 가장 기본적인 조건에서 작동하는 것처럼 보입니다. 그것은 매우 복잡하기 때문에, 나는 많은 숨어있는 버그 wrt 스레드 안전, 불규칙한 운영 순서 등이 있어야한다고 확신합니다.

MAP 인터페이스의 계약이 잘 정의되어 있으므로 코너 케이스, 스레드 안전 등을 확인하는 일반 테스트 컬렉션이 있어야합니다.

Google 컬렉션이 라이브러리에 대해 약 25000 개의 단위 테스트를 실행한다고 들었습니다. 어딘가에 다운로드 할 수 있습니까?

도움이 되었습니까?

해결책

그만큼 Google 컬렉션 Zip에는 테스트가 포함되어 있습니다. Google-Collect-TestFW Jar가 있어야합니다.

구체적으로, MAP 계약 계약에 대한 추상 테스트가 있습니다.

다른 팁

당신은 있는지보고 싶을 수도 있습니다 Google 컬렉션 자신의 요구를 충족시키는 것이 있으므로 자신의지도를 지원할 필요가 없습니다. 예를 들어, 맵 메이커

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의 사용에 대한 Adam의 제안 MapInterFacetest 좋은 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top