테스트 빌드 감지하기

테스트 빌드 감지하기

지금 이 코드가 테스트를 위해 컴파일된 건지, 아니면 실제 프로그램으로 빌드된 건지 궁금할 때가 있죠. Zig에서는 이걸 직접 감지할 수 있어요. 빌드 시점에 어떤 모드로 컴파일되는지가 다르니까, 테스트 전용 로직을 넣고 싶을 때 유용합니다.

출처: Zig Documentation

본문

컴파일 변수(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가 되니까, 테스트할 때만 필요한 동작을 이 값으로 감싸서 조건부로 넣을 수 있어요. 예를 들어 테스트 중에만 검증하거나 로그를 남기는 식으로요.

더 알아보기