2009-05-14 6 views
14

나는 게으른 함수 평가 같은 멋진 것들을하는 Map 인터페이스의 커스텀 구현을 가지고있다. 구현은 외부에서 생성 한 후에 불변으로 나타나야합니다 (예 : put() 및 putAll() 메서드가 지원되지 않음)java.util.Map에 대한 일반 테스트 장치

가장 기본적인 조건에서 작동하는 것처럼 보입니다. 매우 복잡하기 때문에 스레드 안전성, 불규칙한 연산 순서 등 많은 숨겨진 버그가 있어야합니다.

Map 인터페이스의 계약이 잘 정의되어 있으므로 반드시 있어야합니다. 코너 케이스, 스레드 안전성 등을 검사하는 일반적인 테스트 콜렉션

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

답변

0

당신은 Google Collections은 당신이 당신의 자신의지도를 지원하지 않아도 사용자의 요구를 충족 뭔가가 있는지 확인 할 수 있습니다. 지도는 당신이 필요로하는 경우 Map.entrySet()

볼 무엇 변경됩니다 이전에 보이지 않는 키와 map.get(key)을하고 있기 때문에, 건설 후 완전히 불변 표시되지 않습니다 예를 들어, 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); 
} 

참고를 참조하십시오 맞춤지도 구현을 작성하고 테스트를 시작할 수있는 좋은 곳을 원한다면 Google 컬렉션의 MapInterfaceTest을 사용하는 것이 좋습니다.

+0

값이 반올림되는 다른 방법은 키를 계산합니다. –

관련 문제