assert expression;
assert expression1 : expression2;
Assertions은 JDK 1.4부터 추가된 프로그램에 대한 가정을 테스트하는 기능입니다. 위와 같이 assert
키워드를 통해 사용할 수 있으며. assert 키워드의 문장은 해당 문장이 참임을 단언하는 것으로, 만약 단언이 실패할 경우, JVM에서 AssertionError
를 반환합니다. 주로 개발 중 테스트 목적으로 사용됩니다.
// Java program to demonstrate syntax of assertion
import java.util.Scanner;
class Test {
public static void main(String args[])
{
int value = 15;
assert value >= 20 : " Underweight";
System.out.println("value is " + value);
}
}
value is 15
Exception in thread "main" java.lang.AssertionError: Underweight
기본적으로 assertions은 비활성화 되어있습니다. 아래와 같이 Java 실행시 옵션을 줌으로서 assertions를 활성화 시킬 수 있습니다.
java -ea $classfile
java -enableassertions $classfile
반대로 아래와 같이 assertions를 비활성화 시킬수도 있습니다.
java –da $classfile
java –disableassertions $classfile
private void changeCount(int val) {
// 사전 조건(pre-conditions) 체크
assert val == 1 || val == -1
int preCount = this.count;
if((this.count + val) < 0) {
this.count = 0;
} else {
this.count += val;
}
// 사후 조건(post-conditions) 체크
assert (val == 1 && (this.count > preCount)) || (val == -1 && (this.count <= preCount));
// 클래스 불변성(class invariants) 체크
assert this.count >= 0 : this.count;
}
출처