자바 junit 사용하기 (단위테스트) :: 개발/일상_Mr.lee

자바 junit 사용하기 (단위테스트)

Posted by Mr.mandu.
2018. 2. 10. 22:00 개발/java,spring

안녕하세요.

junit에 대하여 포스팅해보겠습니다.

단위테스트라고해서 많이들 들어보셨을겁니다.

하지만 사용하지 않고있죠...

저도 사용하지 않고 있었습니다.


이참에 사용하기로 마음먹고 사용법을 포스팅하려고 합니다.


JUnit이란

자바용 단위 테스 도구 입니다.


먼저 라이브러리를 추가해보겠습니다.

maven이나 gradle을 사용하시는 분은 직접 라이브러리를 가져올수 있지만

이클립스에 제공되는 JUnit이 있습니다.


소스를 다 까보진 않았지만 똑같은거라 생각됩니다.

프로젝트의 우클릭을 하여 Properties를 클릭합니다.



Java Build Path에서 Add Library를 선택합니다.



그러면 친절하게 JUnit이 있습니다.



바로 선택하려 라이브러리를 추가하였습니다.


이제 테스트 소스를 구현해보겠습니다.



먼저, src/main/java에 클래스를 만들었습니다.


그리고 간단한 예제소스를 작성하였습니다.

package lee.junit;


public class Calculator {
	
	public int sum(int num1, int num2 ) {
		return num1+num2;
	}

}





그 다음에는 테스트를 진행할 곳에 클래스를 만들었습니다.

src/test/java 입니다.


package lee.junit;

import static org.junit.jupiter.api.Assertions.assertEquals;

import org.junit.Test;

public class CalculatorTest {
	
	//@Test(timeout=5000)  : 시간단위 : 밀리초
	//@Test(expected=RuntimeException.class) : RuntimeException이 발생해야 성공
	//@Ignore(value=”test”)
	
	//@Before 해당 테스트 클래스의 객체를 초기화하는 작업
	//@After 해당 테스트  실행 수 실행
	
	//@BeforeClass 테스트 클래스 실행 전 한번 실행
	//@AfterClass 테스트 클래스 실행 후 한번 실행
	@Test
	public void testSum( ) {
		Calculator cal = new Calculator();
		int result = cal.sum(10, 20);
		assertEquals(20,  result, 10);
	}

}



테스트의성공여부를위해 assertXXX 메소드를 사용합니다.


assertArrayEquals(a, b); 

 - 배열 AB가 일치함을 확인한다.


assertEquals(a, b);

 - 객체 AB가 일치함을 확인한다.


assertEquals(a, b, c);

 - 객체 A B가 일치함을 확인한다.

 - a: 예상값, b:결과값, c: 오차범위


assertSame(a, b); 

 - 객체 AB가 같은 객임을 확인한다.


assertTrue(a); 

 - 조건 A가 참인가를 확인한다.


assertNotNull(a); 

 - 갹채 A가 null이 아님을 확인한다.



이렇게 소스를 기입하고 실행시켜 보겠습니다.



테스트 클래스를 선택하여 

JUnit Test로 실행시킵니다.


테스트가 실패할 경우 아래와 같은 화면이 나타납니다.

처음에는 에러인줄알고...검색하느냐고 고생했네요..




테스트가 성공적으로 이루어지면 아래의 화면처럼 출력됩니다.



그리고 테스트 클래스에 주석으로 된 부분이 있습니다.

이는 어노테이션을 이용하여 클래스 전, 후에 실행될 클래스 및 메소드를 설정할 수 있습니다.


@BeforeClass

 - 테스트 클래스 수행 시 단위 테스트 메소드 보다 먼저 딱 한 번 수행되어야 할 경우 지정

 ex) DB 연결 시 드라이버 로딩 부분 지정



@AfterClass

 - 단위테스트 함수들이 다 수행되고 맨 마지막에 수행되어야 할 경우 지정

 ex) DB 연결 후 마지막에 드라이버를 반납하는 부분



이외에도 @Before와 @After가 있는데,

@Test로 지정된 단위 테스트 메소드가 실행되기 전과 후에 각각 실행됩니다.



더욱 자세한 내용이 기재되어있는 주소입니다.

https://junit.org/junit5/docs/current/user-guide/#writing-tests-annotations


감사합니다.