JUnit의 동작 방식
- JUnit이 하나의 테스트 클래스를 가져와 테스트를 수행하는 방식은 다음과 같다.
-
테스트 클래스에서 @Test가 붙은 public이고
void형이며 파라미터가 없는 테스트 메소드를 모두 찾는다. -
테스트 클래스의 오브젝트를 하나 만든다.
-
@Before가 붙은 메소드가 있으면 실행한다.
-
@Test가 붙은 메소드를 하나 호출하고 테스트 결과를 저장해둔다.
-
@After가 붙은 메소드가 있으면 실행한다.
-
나머지 테스트 메소드에 대해 2~5번 을 반복한다.
-
모든 테스트의 결과를 종합해서 돌려준다.
@Before와 @After
-
JUnit은 @Test가 붙은 메소드를 실행하기 전에
각각 @Before와 @After가 붙은 메소드를 자동으로 실행한다. -
@Before 혹은 @After 메소드를 테스트 메소드에서 직접 호출하지 않기 때문에
서로 주고받을 정보나 오브젝트가 있다면 인스턴스 변수를 이용해야 한다.
public class GoodgidTest {
private Goodgid goodgid; // 인스턴스 변수 선언
@Before
public void setUp(){
this.goodgid = new Goodgid();
}
@After
public void tearDown(){
this.goodgid = new DeleteGoodGid();
}
}
테스트 클래스 오브젝트
-
각 테스트 메소드를 실행할 때마다 테스트 클래스의 오브젝트를 새로 만든다.
-
한 번 만들어진 테스트 클래스의 오브젝트는 하나의 테스트 메소드를 사용하고 나면 버려진다.
-
테스트 클래스가 @Test 테스트 메소드를 2개 갖고 있다면
테스트가 실행되는 중에 JUnit은 이 클래스의 오브젝트를 2번 만든다.
Why. 테스트 메소드를 실행할 때마다 새로운 오브젝트를 만드는 것일까?
- JUnit은 각 테스트가 서로 영향을 주지 않고
독립적으로 실행됨을 확실히 보장해주기 위해 매번 새로운 오브젝트를 만든다.
픽스처(Fixture)
-
테스트를 수행하는 데 필요한 정보나 오브젝트를 픽스처(Fixture)라고 한다.
-
일반적으로 픽스처는 여러 테스트에서 반복적으로 사용되기 때문에
@Before 메소드를 이용해 생성해두면 편리하다.
참고
- 토비의 스프링 3.1 Vol.1 스프링의 이해와 원리
近期评论