728x90

개발자는 보통 자신이 작성한 코드에 대하여 테스트를 작성하지만, 다른 사람이 작성하거나 프레임워크에 대해서도 테스트를 작성한다고 한다.

진짜 테스트하려는 목적보다 사용방법에 대해 배우려고 하는 것이다.

 

이렇게 작성한 학습테스트의 장점은 다음이 있다고 한다.

  • 다양한 조건에 따른 기능을 손쉽게 확인해볼 수 있다.
  • 학습 테스트 코드를 개발 중에 참고할 수 있다.
  • 프레임워크나 제품을 업그레이드 할 때 호환성 검증을 도와준다.
  • 테스트 작성에 대한 좋은 훈련이 된다.
  • 새로운 기술을 공부하는 과정이 즐거워진다??

그렇기에 몇가지의 예시 테스트로 테스트에 대해 좀 더 알아보자.

public class JUnitTest {

    static JUnitTest testObject;

    @Test
    public void test1(){
        System.out.println(this);
        System.out.println(testObject);
        Assertions.assertNotEquals(this, testObject);
        System.out.println(this);
        System.out.println(testObject);
        System.out.println();
    }

    @Test
    public void test2(){
        System.out.println(this);
        System.out.println(testObject);
        Assertions.assertNotEquals(this, testObject);
        testObject = this;
        System.out.println(this);
        System.out.println(testObject);
        System.out.println();
    }

    @Test
    public void test3(){
        System.out.println(this);
        System.out.println(testObject);
        Assertions.assertNotEquals(this, testObject);
        testObject = this;
        System.out.println(this);
        System.out.println(testObject);
        System.out.println();
    }
}

 

일단 위는 성공하는 테스트이다.

 

근데 이상하지 않나?

분명 test2, test3에서 testObject를 this로 해주었기에, 둘 중 하나는 testObject가 this로 테스트는 실패해야 한다.

 

성공하는 이유는 각 메서드가 실행될 때마다 새로운 테스트 오브젝트가 생성이 되기에 일치하지 않는 것이다.

실제로 실행하면 다음과 같이 로그가 작성된다.

 

testObject가 바뀌는 것이 아니라, 테스트 클래스 자체가 새로운 오브젝트로 변경된다.

 

이렇게 테스트를 작성하다보면 스프링에 대해 깊게 알 수 있다고 한다...

+ Recent posts