반응형

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 [메소드사용]

 

반응형

+ Recent posts