go help testflag

Jmnote (토론 | 기여)님의 2023년 6월 6일 (화) 14:05 판

1 개요

go help testflag

'go test' 명령어는 'go test' 자체에 적용되는 플래그와 결과 테스트 바이너리에 적용되는 플래그를 모두 사용한다.

일부 플래그는 프로파일링을 제어하며 "go tool pprof"에 적합한 실행 프로파일을 작성한다. 자세한 내용은 "go tool pprof -h"를 실행하여 알아보자. pprof의 --alloc_space, --alloc_objects, --show_bytes 옵션은 정보 표시방법을 제어한다.

다음 플래그는 'go test' 명령어에서 인식되며 테스트 실행을 제어한다.

-bench regexp
  • 정규식(regexp)과 매칭되는 벤치마크만 실행한다.
  • 기본적으로 벤치마크는 실행되지 않는다.
  • 모든 벤치마크를 실행하려면 '-bench .' 또는 '-bench=.' 를 사용하자.
  • 정규표현식은 대괄호가 없는 슬래시(/) 문자에 의해 시퀀스로 분할되며, 벤치마크 식별자의 각 부분은 시퀀스 내의 해당 요소(있는 경우)와 매칭되어야 한다. 서브 벤치마크를 식별하기 위해 매칭 항목의 가능한 상위 항목을 b.N=1로 실행한다. 예를 들어, -bench=X/Y가 주어지면 X와 일치하는 최상위 벤치마크는 b.N=1로 실행되어 Y와 일치하는 서브 벤치마크를 찾은 다음 전체가 실행된다.
-benchtime t
  • time.Duration(예: -benchtime 1h30s)으로 지정된 t를 얻기 위해 각 벤치마크를 충분히 반복 실행한다.
  • 기본값은 1초(1s)이다.
  • 특수 구문 Nx는 벤치마크를 N번 실행한다는 의미이다(예: -benchtime 100x).
-count n
  • 각 테스트, 벤치마크, 퍼즈 시드를 n번 실행합니다(기본값 1).
  • -cpu가 설정된 경우 각 GOMAXPROCS 값에 대해 n번 실행합니다.
  • Example은 항상 한 번 실행됩니다. -count는 -fuzz에 매칭되는 fuzz 테스트에 적용되지 않는다.
-cover
  • 커버리지 분석을 활성화한다.
  • 커버리지는 컴파일 전에 소스 코드에 주석을 달아 작동하기 때문에, 커버리지가 활성화된 컴파일 및 테스트 실패는 원래 소스와 일치하지 않는 행 번호를 보고할 수 있다.
-covermode set,count,atomic
  • 테스트되는 패키지에 대한 커버리지 분석 모드를 설정한다.
  • -race가 활성화되지 않은 경우 기본값은 "set"이며, 활성화된 경우 "atomic"이다.
  • 값:
set: bool: 이 문장이 실행되는가?
cont: init: 이 문장이 몇 번 실행되는가?
atomic: init: count와 유사하나, 멀티스레드 테스트에서 정확하다, 훨씬 비싼 테스트
  • -cover도 설정되어야 한다.
-coverpkg pattern1,pattern2,pattern3
  • 패턴과 매칭되는 패키지에 각 테스트의 커버리지 분석을 적용한다.
  • 기본값은 각 테스트가 테스트되는 패키지만 분석하는 것이다.
  • 패키지 패턴에 대한 설명은 'go help packages'를 참조하자.
  • -cover도 설정되어야 한다.
-cpu 1,2,4
  • 테스트, 벤치마크, 퍼지 테스트를 실행해야 하는 GOMAXPROCS 값 목록을 지정한다. 기본값은 GOMAXPROCS의 현재 값다. -cpu는 -fuzz에 매칭되는 fuzz 테스트에 적용되지 않는다.
-failfast
  • 첫째 테스트 실패 후 새 테스트를 시작하지 않는다.
-fuzz regexp
  • 정규표현식과 매칭되는 퍼즈 테스트를 수행한다. 명령줄 인수는 메인 모듈 내에서 정확히 하나의 패키지와 매칭되어야 하며 regexp는 해당 패키지 내에서 정확히 하나의 fuzz 테스트와 매칭되어야 한다. 퍼징은 테스트, 벤치마크, 다른 퍼즈 테스트의 시드 코퍼스, Example이 완료된 후에 발생한다. 자세한 내용은 테스트 패키지 문서의 Fuzzing 섹션을 참조하자.
-fuzztime t
  • time.Duration으로 지정된 t를 가지고(예: -fuzztime 1h30s), 퍼징하는 동안 퍼즈 대상을 충분히 반복하여 실행한다.
  • 기본값은 무기한으로 실행하는 것이다.
  • 특수 구문 Nx는 fuzz 대상을 N번 실행한다는 의미이다(예: -fuzztime 1000x).
-fuzzminimizetime t
  • time.Duration으로 지정된 대로(예: -fuzzminimizetime 30s), 각 최소화 시도 동안 퍼즈 대상을 충분히 반복하여 실행한다.
  • 기본값은 60s이다.
  • 특수 구문 Nx는 fuzz 대상을 N번 실행한다는 의미이다(예: -fuzzminimizetime 100x).
-json
  • 상세 출력 및 테스트 결과를 JSON으로 기록한다. 이는 머신리더블 포맷으로 -v 플래그와 동일한 정보를 표시한다.
-list regexp
  • 정규식과 매칭되는 테스트, 벤치마크, 퍼즈 테스트, Example을 나열한다. 테스트, 벤치마크, 퍼즈 테스트, Example가 실행되지는 않는다.
  • 이것은 최상위 테스트만 나열한다. 서브테스트 또는 서브벤치마크는 표시되지 않는다.
-parallel n
  • 시드 코퍼스를 실행할 때 t.Parallel을 호출하는 테스트 함수 및 t.Parallel을 호출하는 fuzz 대상의 병렬 실행을 허용한다.
  • 이 플래그의 값은 동시에 실행할 최대 테스트 수이다.
  • 퍼징하는 동안 이 플래그의 값은 T.Parallel 호출 여부와 관계없이, 동시에 fuzz 함수를 호출할 수 있는 최대 하위 프로세스 수이다.
  • 기본적으로 -parallel은 GOMAXPROCS 값으로 설정된다.
  • -parallel을 GOMAXPROCS보다 높은 값으로 설정하면 특히 퍼징 시 CPU 경합으로 인해 성능이 저하될 수 있다.
  • -parallel은 단일 테스트 바이너리 내에서만 적용된다.
  • 'go test' 명령은 -p 플래그 설정에 따라 다른 패키지에 대한 테스트도 병렬로 실행할 수 있다('go help build' 참조).
-run regexp
-short
-shuffle off,on,N
-skip regexp
-timeout d
  • 테스트 바이너리가 기간 d보다 오래 실행되면 패닉 상태가 된다.
  • d가 0이면 타임아웃이 비활성화된다.
  • 기본값은 10분(10m)이다.
-v
  • 상세 출력: 수행되는 모든 테스트를 기록한다. 또한 테스트가 성공하더라도 Log 및 Logf 호출의 모든 텍스트를 프린트한다.
-vet list
  • 쉼표로 구분된 vet 검사 목록을 사용하려면 "go test" 중에 "go vet" 호출을 설정하자.
  • list가 비어 있는 경우, "go test"는 항상 처리할 필요가 있다고 생각되는 선별된 검사 목록만 가지고 "go vet"을 실행한다.
  • list가 "off"이면, "go test"는 "go vet"을 실행하지 않는다.

다음 플래그들도 'go test'에서 인식되며 실행 중에 테스트를 프로파일링하는 데 사용할 수 있다.

-benchmem
-blockprofile block.out
-blockprofilerate n
-coverprofile cover.out
-cpuprofile cpu.out
-memprofile mem.out
-memprofilerate n
-mutexprofile mutex.out
-mutexprofilefraction n
-outputdir directory
-trace trace.out

이러한 각 플래그는 -tesv.v 와 같이 선택적 'test.' 접두어로도 인식된다. 그러나 생성된 테스트 바이너리('go test -c'의 결과)를 직접 호출할 때는 접두어가 필수이다.

'go test' 명령어는, 테스트 바이너리를 호출하기 전에 선택적인 패키지 목록의 앞과 뒤에서, 인식된 플래그를 다시 쓰거나 제거한다.

2 같이 보기

3 참고

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}