Junit Assertions : 비교 확인, 조건 확인, Null 확인

황제낙엽 2007.09.03 14:47 조회 수 : 140 추천:95

sitelink1  
sitelink2  
sitelink3  
extra_vars4  
extra_vars5  
extra_vars6  
이클립스 기반 프로젝트 필수 유틸리티 (155페이지)Assertion의 사전적 의미는 주장, 단언이다. 즉, 실행 중간중간에 어떤 값이나 조건이 맞거나 혹은 틀리다고 '주장하거나 단언한다'는 뜻이다.
Assertion을 이용하면 test 메소드 중간중간에 어떤 조건이나 객체의 비교를 통해서 문제점을 끄집어 낼 수 있도록 도와준다.
사용 방법은 다음의 메소드를 test 메소드 안에서 사용하면 된다. 그리고 비교한 결과나 조건이 false 면, AssertionFailure라는 Failure를 내고 해당 test 메소드는 종료한다.

  • assertEquals(primitive expected, primitive actual) : 두 개의 기본형(primitive) 변수의 값이 같은지 검사한다.
  • assertEquals(Object expected, Object actual) : 두 개의 객체 값이 같은지 검사한다(내부적으로 equals() 메소드를 사용한다.)
  • assertSame(Object expected, Object actual) : 두 개의 객체가 같은지 검사한다(내부적으로 두 객체의 메모리 주소가 같은지를 검사한다)
  • assertNotSame(Object expected, Object actual) : 두 개의 객체가 다른지 검사한다(내부적으로 두 객체의 메모리 주소가 다른지를 검사한다)
  • assertNull(Object object) : 객체가 Null인지를 검사한다.
  • assertNotNull(Object object) : 객체가 Null이 아닌지를 검사한다.
  • assertTrue(boolean condition) : 조건문이 true인지를 검사한다.
  • assertFalse(boolean condition) : 조건문이 false인지를 검사한다.

위에서 설명한 메소드를 확인해 보기 위해 다음의 예제를 살펴보자. assertTrue(counter.getDays() > 500)라는 줄은 counter.getDays()의 값이 500보다 크면 정상이라고 주장하는 것이다.

/*
 * DayCounter 프로그램의 getDays() 메소드를 테스트한다.
 */
package com.seeyouservice.web.ibatis;

public class DayCounterTest1 extends TestCase {
   
    /**
     * getDays() 메소드를 테스트한다.
     */
    public void testGetDays() {
 
 DayCounter counter = new DayCounter();
 Calendar day = Calendar.getInstance();
 //2003년 10월 5일
 day.set(2003, 10, 5);
 counter.setDay1(day);
 
 day = Calendar.getInstance();
 //2002년 6월 2일
 day.set(2002, 6, 2);
 counter.setDay2(day);
 
 //결과는 491이나 fail이 되도록 틀린 조건을 걸어보자
 assertTrue(counter.getDays() > 500);
    }
}

그러나 counter.getDays()의 결과 값은 491이기 때문에, 이 예제를 실행하면 AssertionFailure를 내고 종료한다. 만약 조건이 true라면 아무런 메세지를 내지 않고 지나간다.