테스트 빌드 감지하기
테스트 빌드 감지하기
지금 이 코드가 테스트를 위해 컴파일된 건지, 아니면 실제 프로그램으로 빌드된 건지 궁금할 때가 있죠. Zig에서는 이걸 직접 감지할 수 있어요. 빌드 시점에 어떤 모드로 컴파일되는지가 다르니까, 테스트 전용 로직을 넣고 싶을 때 유용합니다.
본문
컴파일 변수(compile variable)인 @import("builtin").is_test를 쓰면 테스트 빌드 여부를 감지할 수 있어요.
const std = @import("std");
const builtin = @import("builtin");
const expect = std.testing.expect;
test "builtin.is_test" {
try expect(isATest());
}
fn isATest() bool {
return builtin.is_test;
}
shell에서 실행하면 이렇게 테스트가 통과해요.
$ zig test testing_detect_test.zig
1/1 testing_detect_test.test.builtin.is_test...OK
All 1 tests passed.
is_test는 테스트 빌드일 때만 true가 되니까, 테스트할 때만 필요한 동작을 이 값으로 감싸서 조건부로 넣을 수 있어요. 예를 들어 테스트 중에만 검증하거나 로그를 남기는 식으로요.
더 알아보기
- 컴파일 변수 문서에서
is_test외에 다른 내장 변수들도 확인해 볼 수 있어요. - 테스트 실행 결과 출력과 로깅은 테스트 출력과 로깅에서 다뤄요.