ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • junit 사용
    Java 2020. 5. 8. 12:19

    Junit이란

    자바용 단위 테스트 도구

    Annotation 소개

    @Before
    Test 함수보다 먼저 수행되도록 정의하는 Annotation.
    테스트에 필요한 공통적인 내용들을 정의해두면 좋다.
    해당 Annotation을 사용하는 함수는 public void로 정의되어야 하며, 상속받은 Superclass 들에
    정의된 @Before Annotation을 사용한 함수가 가장 먼저 수행된다.

    @After
    위에 정의한 Before Annotation과 반대되는 개념으로 Test 함수 이후에 수행된다.
    보통 Before Annotation으로 정의된 함수에서 할당한 자원들을 해제하는 용도로 사용됨.
    (DB Connection 이 대표적인 예)
    이 역시도 public void로 선언하여야 Test 함수 이후에 수행될 수 있음.
    Before 또는 Test 함수에서 예외가 발생하더라도 After Annotation이 붙은 함수는 수행된다.
    Superclass에서 정의된 After 함수는 현재 클래스에 정의된 After 함수 수행 이후에 수행됨!!

    @BeforeClass
    테스트 수행에서 딱! 한 번 수행되도록 하는 공통 설정이 필요한 경우에 사용하면 좋다.
    (예를 들어 Database logging과 같은 수행업무)
    테스트의 독립성을 손상시킬 수도 있으나 공통의 내용을 뺄 수 있으므로 효율적인 방법이 되기도 한다.
    BeforeClass로 사용될 함수는 public static void 로 선언되어야 하며 매개변수가 있어서는 안된다.
    Superclass에 선언된 BeforeClass가 있는 경우에 현재 클래스의 선언내용보다 먼저 수행된다.

    @AfterClass
    Before와 After 같은 관계로 생각하면 쉽다. BeforeClass에서 할당한 자원 해제에 사용된다.
    이 역시도 테스트 수행에서 딱! 한 번만 수행되도록 정의되며 public static void로 선언되어야 한다.
    BeforeClass에서 예외를 발생시키더라도 AfterClass는 반드시 수행되며, Superclass에서 정의된 내용은
    현재 클래스의 AfterClass가 수행된 이후에 수행된다.

    @Ignore
    일시적으로 테스트 또는 테스트 그룹을 사용하지 않기를 원할 수도 있다.
    @Test가 붙은 함수라고 하더라도 Ignore Annotation이 붙으면 테스트 대상에 포함되지 않고,
    또는 Ignore Annotation을 Class에 붙이게 되면 해당 클래스는 테스트 수행되지 않는다.

     @Before
    public void setUp(){
        //setup before testing
    }
    @After
    public void tearDown(){
        //teardown after testing
    }
    @Test
    public void testSum(){
        //testing   
    }
    @Test(timeout=5000)
    public void testSum(){
        //testing
    }
    @Test(expected=RuntimeException.class)
    public void testSum(){
        //testing   
    }

    자주 사용하는 jUnit 메서드

     assertEquals(a,b); 

     객체 a,b의 값이 일치함을 확인한다.

     assertArrayEquals(a,b);

     배열 a,b의 값이 일치함을 확인한다.

     assertSame(a,b);

     객체 a,b가 같은 객체임을 확인한다.

     두 객체의 레퍼런스가 동일한가를 확인한다.

     assertTrue(a);

     조건 a가 참인가 확인한다.

     assertNotNull(a);

     객체 a가 null이 아님을 확인한다.

    Spring-Test에서 테스트를 지원하는 어노테이션

    @RunWith(SpringJUnit4ClassRunner.class)

    - @RunWith는 jUnit 프레임워크의 테스트 실행방법을 확장할 때 사용하는 어노테이션이다.

    - SpringJUnit4ClassRunner라는 클래스를 지정해주면 jUnit이 테스트를 진행하는 중에 ApplicationContext를 만들고 관리하는 작업을 진행해준다.

    - @RunWith 어노테이션은 각각의 테스트 별로 객체가 새성되더라도 싱글톤(Singletone)의 ApplicationContext를 보장한다.

    @ContextConfiguration

    - 스프링 빈(Bean) 설정 파일의 위치를 지정할 떄 사용되는 어노테이션이다.

    @Autowired

    - 스프링 DI에서 사용되는 특별한 어노테이션이다.

    - 해당 변수에 자동으로 빈(Bean)을 매핑 해준다.

    - 스프링 빈(Bean) 설정 파일을 읽기 위해 굳이 GenericXmlApplicationContext를 사용할 필요가 없다.

    - 변수, setter메서드, 생성자, 일반메서드에 적용가능하다.

    - 의존하는 객체를 주입할 떄 주로 Type을 이용하게 된다.

    - , 태그와 동일한 역할을 한다.

    참고문헌

    https://junit.org/junit5/docs/current/user-guide/#overview [junit 문서]
    https://junit.org/junit5/docs/current/user-guide/#writing-tests-annotations [junit 문서중 어노테이션 정의]
    https://ojava.tistory.com/58 [junit을 이용한 테스트수행 블로그]
    https://shlee0882.tistory.com/202 [메소드사용]

     

    반응형

    댓글

Designed by Tistory.