2015-02-05 2 views
-2

mockito를 사용하여 bestElement() 메소드의 단위 테스트 케이스를 작성하고 싶습니다. ClassA와 ClassB는 동일한 패키지에 있습니다. 배열 목록이 비어 있고 배열 목록이 비어 있지 않은 경우 테스트하고 싶습니다. 나는 단위 테스트에서 새롭다. 두 가지 경우 모두이 방법에 대한 단위 테스트 작성 방법을 알려주십시오. 다른 정보가 필요한지 언급하십시오. 감사!mockito를 사용한 단위 테스트

public class ClassA{ 

    private final ArrayList<ClassB> array = new ArrayList<>(); 

    public ClassB bestElement() { 

    if (array.isEmpty()) { 
     return null; 
    } 

    ClassB first = array.get(0); 
    array.remove(0); 
    return first; 
} 

답변

1

우선 ClassB 목록에 새 요소를 추가하는 방법이 필요합니다. getArray()와 같은 getter를 사용할 수 있습니다.

@Test 
public void testBestIsFirstElement() { 
    ClassA a = new ClassA(); 
    ClassB best = new ClassB(); 
    ClassB b1 = new ClassB(); 
    a.getArray().add(best); 
    a.getArray().add(b1); 

    assertThat(a.bestElement(), equalTo(best)); 
} 

@Test 
public void testBestIsNullIfListIsEmpty() { 
    ClassA a = new ClassA(); 

    assertThat(a.bestElement(), equalTo(null)); 
} 
+0

셀릭 bestElement 방법은 여전히 ​​널 (null)만을 반환 나는이하지만 무엇입니까 널 오류를 시도 :

내가 먼저 단위 테스트 튜토리얼을하는 것이 좋습니다

,이 일을 확인! 이 getArray() 메소드도 작동하지 않습니다. 방금 테스트 파일에 새 arrayList를 만든 다음 요소를 추가했습니다. 전용 임시 = 새로운 ArrayList <>(). 메소드 bestElement()에서 temp.add (best)와 temp.add (b1)를 사용했습니다. –

+0

Celik .. 나는 이것을 시도했지만 bestElement 메서드가 여전히 null만을 반환하므로 null 오류가 발생합니다! 이 getArray() 메소드도 작동하지 않습니다. 방금 테스트 파일에 새 arrayList를 만든 다음 요소를 추가했습니다. private temp = new ArrayList <>(); temp.add (최상); temp.add (b1); –

+0

getArray()는 ClassA의 public 메서드 여야합니다. 다음과 같이하십시오. 공개 목록 getArray() {배열 반환; } –

0

이 경우에는 mockito를 사용할 필요가 없습니다. 조롱은 주로 단위 테스트에 사용됩니다. 테스트중인 오브젝트는 다른 (복잡한) 오브젝트에 종속 될 수 있습니다. 테스트하려는 객체의 동작을 분리하기 위해 실제 객체의 동작을 시뮬레이션하는 모의 객체로 다른 객체를 대체합니다. 실제 개체가 단위 테스트에 통합하기에는 비실용적 인 경우에 유용합니다. ... http://www.vogella.com/tutorials/JUnit/article.html

관련 문제