2012-09-10 3 views
2

의 방법으로 반환 값을 할당하는 방법을 어떻게 모의 개체를 사용하여이 클래스를 테스트 할 수 있습니다Junit와는 : JUnit을

클래스 MyClass의를 {

 MyStudent mystudent=null; 
    Mymethod mymethod= new Mymethod(); 

    public void show(String data){ 
     mystudent=mymethod.display(data); 

    } 
    } 
다음

mymethod.display() 방법은 인스턴스를 반환 mystudent 내가 질문 권리를 이해한다면

+0

@ 행동에 대한 테스트. 여기서 행동이란 무엇입니까? – Jayan

+0

괭이 testMethod에 대한 테스트를 작성 –

+0

나는 질문을 이해가 안 돼요 : 클래스 _Test_ 다른 클래스 Totest 귀하의 junit 테스트인가요? _TestMethod_ 테스트 케이스입니까? 당신의 대답에,이 모든 클래스/객체/방법 단어 테스트, 그래서 그것은 당신에게 도움이 :) 클래스가 있어야한다 – Alban

답변

1

, 당신은 사소한 예에 조롱 사용하여 JUnit 테스트의 예를 싶습니다. 같을 것이다 Junit4 및 mockito 당신의 JUnit 테스트를 사용 :

TestTest.java은

import static org.junit.Assert.assertNotNull; 
import static org.mockito.Mockito.mock; 
import static org.mockito.Mockito.when; 
import static org.mockito.Matchers.anyString; 

import org.junit.Before; 


public class TestTest { 
    private Test test; 
    private Totest totest; 

    @Before 
    public void setup(){ 
     totest = mock(Totest.class); 
     test = new Test(totest); 
    } 

    @org.junit.Test 
    public void mytest_should_not_be_null_after_I_called_displayed(){ 
     when(totest.display(anyString())).thenReturn(new Mytest()); 
     test.myMethod("some data"); 
     assertNotNull(test.getMytest()); 
    } 
} 

설정 방법은 @Before 주석 anotated된다. 이 테스트 클래스의 모든 테스트 케이스가 실행되기 전에 실행됩니다. 테스트 케이스는 @Test으로 주석되어 있습니다. 그것은 단지 필드 MYTEST표시를 호출하는 방법 후 null 이외 있는지 확인합니다.

는 그리고 당신은 다음과 같이 테스트 클래스를 개선해야

class Test{ 

    private Mytest mytest=null; 
    private final Totest totest; 

    public Test(Totest totest) { 
     this.totest = totest; 
    } 

    public void myMethod(String data){ 
     mytest = totest.display(data); 
    } 

    public Mytest getMytest() { 
     return mytest; 
    } 

} 

당신은 매개 변수로 Totest 인스턴스를 취하는 생성자를주의해야한다. 이 클래스의 가장 완전한 필드는 final이됩니다. 왜냐하면 그것을 설정할 수있는 유일한 코드가 생성자이기 때문입니다. 이렇게하면 Totest의 인스턴스를 Test 클래스에 삽입 할 수 있습니다. 이것은 일종의 의존성 주입입니다 (예를 들어 클래스에 의존성을 주입하는 방법의 예는 있지만 다른 방법이 있습니다. 간단한 설정자를 사용할 수도 있습니다. 필자는 의존성을 final로 선언하기를 선호합니다. 내 의견으로는 더 명확하다). 그런데 왜 내가 당신의 간단한 예에서 DI를 사용 했습니까? Test에서 Totest 인스턴스를 주입해야했기 때문입니다. 단위 테스트에서 내가 주입하는 인스턴스는 단지 모의 (mock)입니다. 테스트 케이스의 첫 번째 줄은 표시 될 때 mock 인스턴스의 동작을 정의합니다.

나는 그것이 약간의 희망이 있기를 바랍니다.

+0

감사합니다. –

관련 문제