학습 테스트
- 내가 만들지 않는 프레임워크나 라이브러리에 대한 테스트를 작성하는 것
학습 테스트의 장점
다양한 조건에 따른 기능 테스트 가능
- 자동화된 테스트가 가능하기 때문에 다양한 조건에서 어떤 기능이 어떻게 동작하는지 빠르게 확인할 수 있다.
학습 테스트 코드를 개발 중 참고할 수 있다.
- 학습 테스트는 다양한 기능과 조건에 대한 개별 테스트 코드를 남겨둘 수 있기 때문에 좋은 참고 자료로서 사용할 수 있다.
프레임워크나 제품을 업그레이드 할 때 호환성 검증을 돕는다.
- 새로운 버전에서는 기존에 잘 동작하던 것들에 이상이 생길 수 있다.
- 학습 테스트를 사용하면, 다양한 기능에 대한 개별 테스트가 가능하므로 기능이 변화된 부분을 빠르게 찾을 수 있다.
테스트 작성 훈련을 할 수 있다.
- 학습 테스트를 작성하면서 테스트 코드 작성 연습을 할 수 있다.
학습 테스트 예제
JUnit 테스트 오브젝트 테스트
import org.junit.Test
public class JUnitTest{
static JUnitTest testObject;
@Test
public void test1(){
assertThat(this, is(not(sameInstance(testObject)));
testObject = this;
}
@Test
public void test2(){
assertThat(this, is(not(sameInstance(testObject)));
testObject = this;
}
@Test
public void test3(){
assertThat(this, is(not(sameInstance(testObject)));
testObject = this;
}
}
- 결과를 보면, Test를 진행할 때마다 매번 새로운 오브젝트가 생성됨을 확인할 수 있다.
- 근데 이 테스트는 직전 오브젝트와 현재 오브젝트만 검사하니까 애매함
import org.junit.Test
// hasItem(obj) : testObject에 obj가 있는지 확인하는 용도
public class JUnitTest{
static Set<JUnitTest> testObject = new HashSet<JUnitTest>();
@Test
public void test1(){
assertThat(testObject, not(hasItem(this)));
testObject.add(this);
}
@Test
public void test2(){
assertThat(testObject, not(hasItem(this)));
testObject.add(this);
}
@Test
public void test3(){
assertThat(testObject, not(hasItem(this)));
testObject.add(this);
}
}
- JUnit은 테스트마다 새로운 테스트 오브젝트를 생성한다는 사실을 확인 가능함
스프링 테스트 컨텍스트 테스트