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 [메소드사용]
'Java' 카테고리의 다른 글
[java] java 로 gzip 압축 및 풀기 (0) | 2020.08.10 |
---|---|
[Java] mysql aes_encrypt 를 java 코드로 만들기(AES 암호화) (0) | 2020.07.22 |
[자바] Intellij 에서 javadoc 문서 만들기 (0) | 2020.06.02 |