Java에서 Assert 제대로 쓰기

Assert

Assert는 개발/테스트 단계에서 파라미터가 제대로 넘어왔는지 계산이 제대로 됬는지 혹은 특정 메소드가 작동하는 한계상황(Null이 들어오면 작동안함)을 정하는 용도로 사용한다.

Java에서 Assert

Java에서는 JDK 1.4부터 assert라는 예약어 를 지원했다.

assert [Boolean] // 참이면 Pass, 거짓이면 AssertionError

실행옵션 세팅

java default 실행에서는 assert가 모두 제외된다. 실행시 -ea 옵션을 줘야지만 작동하니 개발/테스트 일때는 설정해놓기

java -ea

Intellij에서는 기본 JVM 옵션이 -ea이다. (그래도 혹시 모르니 확인하기..) (assert-intllij-setting)[/blog.github.io/img/documents/java/assert-intllij-setting.png]

Assert를 어떻게 써야할까?

Assert는 아무데나 덕지덕지 붙여도 상관이 없지만, 꼭 넣으면 좋은 곳들이 있다.

메소드 파리미터 값 체크

void doParty(String title, int friendCount) {
    assert title == null;
    assert friendCount > 0;

    // 파티 즐기기...
}

위와 같이 함수에 오면 안되는 값에 대해서 정의해줌으로 테스트 실행시 찾을 수 있다.

else, default

IF문 혹은 switch문이든 마지막에 else, default를 넣는 것은 좋은 습관이다.
특히 switch문의 경우 default는 필수 이다.

 switch (status) {
    case 1: 
        break;
    case 2:
        break;
    case 3:
        break;
    default:
        assert false;
        break;
}

이처럼 default에 assert문을 넣는 것으로 차후에 상태값이 추가 되거나때 변경되었을떄 쉽게 찾을 수 있다.

comments powered by Disqus