Test 선언

Test 선언

테스트를 어떻게 선언하고, 선언한 테스트가 언제 실행되는지, 그리고 이름을 붙인 테스트가 문서화에서 어떤 역할을 하는지 살펴볼게요. Zig의 test 키워드가 주는 자유로운 배치 방식과, 문서화를 겸하는 doctest라는 개념까지 한 번에 정리해요.

출처: Zig Documentation

본문

테스트 선언은 키워드 test로 시작해요. 그 뒤에는 선택적으로 문자열 리터럴이나 식별자로 쓴 이름이 올 수 있고, 마지막으로 함수에 허용되는 유효한 Zig 코드를 담은 블록이 이어져요.

이름이 없는 테스트 블록은 항상 테스트 빌드에서 실행되며, Skip Tests의 적용을 받지 않아요.

테스트 선언은 함수와 비슷해요. 반환 타입과 코드 블록을 갖고 있죠. test의 암시적 반환 타입은 Error Union Typeanyerror!void이고, 이 타입은 바꿀 수 없어요. Zig 소스 파일이 zig test 도구로 빌드되지 않으면, 해당 파일의 테스트 선언들은 빌드에서 제외돼요.

테스트 선언은 테스트 대상 코드가 쓰여 있는 파일에 함께 쓸 수도 있고, 별도의 Zig 소스 파일에 쓸 수도 있어요. 테스트 선언은 최상위 선언이라 순서에 영향을 받지 않아서, 테스트 대상 코드보다 앞이나 뒤 어디에든 놓을 수 있어요.

Doctests

식별자로 이름을 붙인 테스트 선언은 doctest가 돼요. 이때 식별자는 스코프 안의 다른 선언을 가리켜야 해요. doctest는 doc comment처럼 해당 선언의 문서 역할을 하며, 그 선언에 대해 생성된 문서에 함께 나타나요.

효과적인 doctest는 자기 완결적이어야 하고, 테스트 대상 선언 자체에 집중해야 해요. 그리고 그 선언의 인터페이스나 의도된 사용법에 대해 새 사용자가 가질 만한 질문에 답을 주면서, 불필요하거나 헷갈리는 세부사항은 피해야 하죠. doctest는 doc comment의 대체재가 아니라, zig test로 검증되는 테스트 가능한 코드 중심 예제를 제공하는 보충이자 동반자예요.

더 알아보기

  • The Global Error Setanyerror가 모이는 전역 오류 집합을 살펴봐요.
  • Grammar — 정확한 문법 정의를 확인해요.