assertThat의 컴파일 및 배포 시점 동작assertThat을 "제거"하는 방법은 빌드 도구와 설정을 통해 가능.assertThat은 라이브러리 메서드이므로, 컴파일 플래그로 직접적으로 배포 코드에서 제거하는 기능은 제공되지 않음.assertThat을 제외하려면assertThat 호출을 테스트 코드로 한정하고, 프로덕션 빌드에서 제외되도록 설정하는 방법이 필요.assertThat 을 소스 코드에서 제거하는 방법assertThat 호출을 제거할 수 있음.tasks.withType(JavaCompile) {
doFirst {
fileTree('src/main/java').matching {
include '**/*.java'
}.each { file ->
def content = file.text.replaceAll(/assertThat\(.*\);/, '')
file.text = content
}
}
}assertThat 호출을 배포 시점에서 제거할 수 있음.sed와 같은 명령어로 소스 코드 내 assertThat 호출을 일괄적으로 제거할 수 있음.find ./src/main/java -type f -name "*.java" -exec sed -i '/assertThat/d' {} +assertThat 호출:assertThat을 호출하고, 빌드 시 이 조건을 환경 변수나 플래그로 제어할 수 있음.if (System.getenv("ENABLE_ASSERT") != null) {
assertThat(value).isNotNull();
}assert vs assertThatassert:-ea)을 통해 활성화하거나 비활성화 가능.assertThat:assert 외에 Java에서 조건 검증을 위한 방법들예외 처리 (if와 throw):
if (b == 0) {
throw new IllegalArgumentException("Divider must not be zero");
}Objects.requireNonNull:
null인 경우 예외를 던짐.this.name = Objects.requireNonNull(name, "Name cannot be null");Preconditions (Guava):
Preconditions.checkArgument(age > 0, "Age must be positive");Bean Validation:
@NotNull, @Min 등의 애노테이션을 사용해 조건을 검증.public class User {
@NotNull private String name;
@Min(18) private int age;
}assertThat (JUnit/AssertJ):
assertThat(value).isNotNull();