JUnit4

Java 단위테스트 프레임워크

라이브러리

  • JUnit4 : 테스팅 프레임워크
    • asserEquals(a,b) : 객체 a,b가 일치함을 확인
    • assertTrue(a) : 조건 a가 참인지 확인
    • assertNotNull(a) : 객체 a가 null이 아님을 확인

테스트코드 작성예시

Calculator.java

public class Calculator {
  public double sum(double a, doubleb){
    return a + b;    
   }
}

CalculatorTest.java (Test code)

import org.junit.Test;
import static org.junit.Assert.*;

public class CalculatorTest {
  @Test
  public void testSum(){
    Calculator c = new Calculator();
    double result = c.sum(10, 50);   
    assertEquals(60, result, 0);
  }
}
  • 테스트 클래스는 public 선언
  • 클래스명은 관례상 테스트할클래스명 + Test
  • @Test : 단위테스트 메소드임을 명시
  • assertEquals(예상값, 실제값, 허용오차)

annotation

  • Spring framework 기반 JUnit test setting
    • @RunWith(SpringJUnit4ClassRunner.class) : Spring 기반의 테스트 코드 작성을 위해
    • @ContextConfiguration : Spring 프레임워크 context 파일을 테스트 수행시에도 동일하게 로딩
@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations={"file:WebContent/WEB-INF/classes/applicationContext*.xml"})


  • 메서드 수행시간 제한
@Test(timeout=5000)

이 메서드가 결과반환하는데 5000 밀리초가 넘어가면 테스트 실패

  • Exception test
@Test(expected=RuntimeException.class)

RuntimeException 발생해야하는 클래스
= 발생하지 않을경우 실패

  • @Ignore : 해당 메서드는 테스트를 건너뜀
@Test(timeout=5000)
@Ignore(value=테스트 안하고 넘어가기)


  • @Before : 해당 테스트클래스의 객체 초기화하는 작업
@Before


  • @After : 해당 테스트 실행 후 실행됨
@After



Reference
JUnit in Action (단위테스트의 모든 것) (저자: 펠리페 레미, 빈센트 마솔, 게리 그레고리)

업데이트: