2012-04-06 2 views
0

Collection 아래의 인터페이스를 반환하는 메소드를 검사하는 간단한 테스트를 작성하고 있습니다. 가능한 한이 컬렉션의 내부 표현을 추상화하려고 노력 중이므로이 테스트는 두 경우 모두를 통과합니다. 메서드가 ListSet을 반환하는 경우.주문과 함께 콜렉션 검사를 테스트합니다.

은 주문 (LinkedHashSet 또는 LinkedHashMapSet)으로 주문해야하므로 주문을 테스트해야합니다. 그래서 일반적으로 나는이 같은 테스트를 작성하고 싶습니다 : 두 컬렉션은 "동일한"(같은 순서에 즉 같은 값)하지 IFF에 실패합니다

assertThat(returnedList, containsOrdered('t1", "t2", "t3")); 

합니다.

이 경우에는 Hamcrest 라이브러리가 유용하다는 것을 알았지 만, 문서에 갇혀 있습니다. 어떤 도움을 주시면 감사하겠습니다 만, 가능한 경우 CollectionTestUtil 또는 내 자신의 Hamcrest Matcher을 쓰지 않도록 노력할 것입니다.

답변

1

합니다.

assertThat(returnedList, contains("t1", "t2", "t3")) 

이됩니다. containsInAnyOrder과 비교하십시오.

+0

이 패키지에 전체 패키지 및 클래스 경로를 제공 할 수 있습니까? JUnit이나 Hamcrest의 주장을 사용하고 있습니까? 어떤 차이가 있습니까? –

+0

나는 hamcrest-all 의존성을 당기고 있기 때문에 hamcrest 라이브러리의 버전이 잘못되었습니다. 나는 junit overlapping problems (hamcrest를 제공하지 않는 junit-dep artifact가 있으므로, hamcrest support를 추가 할 가능성이있다)와 함께 그것을 고쳤다. 당신의 도움을 주셔서 감사합니다 –

1

JUnit을 여러 개의 서로 다른 유형의 assertArrayEquals -implementations 들어있는 org.junit.Assert을 가지고, 그래서 당신은 같은 것을 할 수있는 : 당신은 거의 거기

Collection<String> returnedList = new ArrayList<String>(); //Replace with call to whatever returns the ordered collection  
    Assert.assertArrayEquals(new Object[]{"t1", "t2", "t3"}, returnedList.toArray()); 
+0

예, 이것이 제가 생각했던 대안입니다 (컬렉션 대신 배열을 비교하는 경우). 다른 하나가 실패하면이 방법을 사용합니다. –

관련 문제