테스트 건너뛰기

테스트 건너뛰기 (Skip Tests)

테스트를 전부 실행하지 않고 일부만 걸러내고 싶을 때가 있죠. 아직 못 고친 실패 테스트라든지, 시간이 오래 걸리는 테스트라든지요. Zig에서 테스트를 건너뛰는 방법은 크게 두 가지가 있는데, 지금 필요한 상황에 맞춰 골라 쓰면 돼요.

출처: Zig Documentation

본문

가장 간단한 방법은 zig test 명령줄 인자인 --test-filter [text]로 걸러내는 거예요. 이렇게 하면 테스트 빌드에 이름이 그 filter text를 포함하는 테스트만 포함되죠. 여기서 한 가지 짚고 넘어갈 점이 있어요. 이름이 없는(non-named) 테스트는 --test-filter [text]를 써도 항상 실행된다는 거예요. filter는 이름 있는 테스트만 거르는 기능이라는 걸 기억해 두면 되겠죠.

좀 더 프로그래밍적으로, 즉 코드 안에서 테스트를 건너뛰고 싶을 때는 test 블록이 error.SkipZigTest를 돌려주게 만들면 돼요. 그러면 기본 테스트 러너가 그 테스트를 '건너뜀(skipped)'으로 처리해 줘요. 모든 테스트가 끝나면 건너뛴 전체 테스트 수도 함께 알려주고요. 어디에 쓸 수 있을까요, 예를 들어 아직 준비되지 않은 환경에서만 실행되는 테스트라든가, 곧 고칠 예정이라 통과 여부가 의미 없는 테스트에 임시로 걸어두기 좋아요.

직접 눈으로 확인해 볼게요. error.SkipZigTest를 돌려주는 테스트 하나를 만들고 실행하면:

test "this will be skipped" {
    return error.SkipZigTest;
}
$ zig test testing_skip.zig
1/1 testing_skip.test.this will be skipped...SKIP
0 passed; 1 skipped; 0 failed.

마지막 줄이 핵심이에요. 1 skipped라고 나오는 걸 보면 이 테스트가 실패로 처리된 게 아니라 명확하게 '건너뜀'으로 집계됐다는 걸 알 수 있죠. 0 failed인 덕분에 실패가 아니라 skip으로 처리돼서 테스트 결과 자체는 깨지지 않아요.

더 알아보기

  • 테스트 이름으로 거르는 명령줄 인자 — zig test --test-filter [text]
  • 건너뛰기를 알리는 에러 값 — error.SkipZigTest