, 당신은 사소한 예에 조롱 사용하여 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 인스턴스의 동작을 정의합니다.
나는 그것이 약간의 희망이 있기를 바랍니다.
@ 행동에 대한 테스트. 여기서 행동이란 무엇입니까? – Jayan
괭이 testMethod에 대한 테스트를 작성 –
나는 질문을 이해가 안 돼요 : 클래스 _Test_ 다른 클래스 Totest 귀하의 junit 테스트인가요? _TestMethod_ 테스트 케이스입니까? 당신의 대답에,이 모든 클래스/객체/방법 단어 테스트, 그래서 그것은 당신에게 도움이 :) 클래스가 있어야한다 – Alban