진짜 개발자
본문 바로가기

Test

Test - Junit이란?

728x90
Junit 이란

Junit 이란?

Junit이란 Java의 단위 테스팅(Unit Testing) 도구이다. 단 하나의 jar 파일로 되어 있다. Testing 결과를 단순히 문서로 남기는 것이 아니라 Test Class를 그대로 남김으로써 추 후 개발자에게 테스트 방법 및 클래스의 History를 넘겨줄 수 있다.

 

특징

  • 단위 테스트 Framework중 하나
  • 단정문으로 테스트 케이스의 수행 결과를 판별
  • Annotation(@)으로 간결하게 사용 가능

 

단정문

 

 

어노테이션

1. 초기화

@Before 어노테이션을 이용하면 테스트 클래스 안의 메소드들이 테스트 전에 실행할 코드를 정의할 수 있다.

@BeforeClass 어노테이션을 사용한다면 메소드들이 몇번 실행되건 테스트전 해당 클래스에서 단 한번만 실행하도록 할 수 있다.

 

2. 해제

@After 어노테이션을 메소드 위에 선언한다면 테스트 클래스 안의 메소드들이 테스트 후 실행할 코드를 정의할 수 있다.

마찬가지로 @AfterClass 어노테이션을 사용한다면 메소드들이 몇번 실행되건 테스트전 해당 클래스에서 단 한번만 실행하도록 할 수 있다.

 

3. 테스트 메소드 정하기

@Test 어노테이션을 메소드위에 선언하면 해당 메소드를 테스트 대상으로 지정할 수 있다.

 

4. 테스트 메소드 수행시간 제한

@Test(timeout='mili second') 어노테이션을 메소드위에 선언하면, 밀리 초 단위로 메소드의 수행시간을 제한하여 테스트 할 수 있다.

 

5. 테스트 메소드에 Exception 지정하기

@Test(expected='exception.class')를 메소드위에 선언하면 해당 메소드가 선언된 exception을 발생시켜야 테스트가 성공되도록 할 수 있다.

 

IntelliJ에서 Junit을 이용한 UnitTesting

Project 구조

그림과 같이 main 디렉토리 하위에는 실제 소스코드가 위치하며 main과 같은 레벨에 test라는 디렉토리가 있으며 그 하위에는 main과 똑같은 구조로 디렉토리가 또 존재한다. 또 main하위에 존재하는 class들의 testClass가 1:1 대응하여 위치한다.


Test Code

@Before 어노테이션을 이용하여 test전 num1, num2를 초기화 한 후 setUp()메소드가 실행되었음을 확인하기 위해 "=== Before ===="를 콘솔에 출력한다. 또 cal()이란 테스트 메소드 위에 @Test 어노테이션을 선언하여 테스트 대상 메소드임을 지정하였으며 num1과 num2를 더하여 20이라는 틀린 값을 테스팅하도록 했다.

 

Error Testing

그림과 같이 ! 마크가 나타나며 Testing 결과가 실패했음을 볼 수 있다. 콘솔을 확인하면 === Before ====가 출력되는 것을 볼 수 있다 이것을 토대로 Test 메소드 실행 전 @Before이 선언된 메소드가 실행되었음을 확인할 수 있다. 그 하단에 출력된 junit.fram ework.AssertionFailedError:~를 확인한 결과 Testing의 결과로 20을 지정하였으나 실제로는 30이란 값이 나왔다고 알려주는 것을 볼 수 있다.

 

Success Testing

위 그림은 @Test가 선언된 메소드를 assertEqulas(30, num1+num2) 로 수정한 후의 그림이다. 녹색 체크 마크가 나타나며 Testing이 Pass 됨을 볼 수 있다.