답변:
참고 로 이동 1.2 (Q4 2013, RC1을 사용할 수는) 이제 표시됩니다 테스트 커버리지 결과 :
의 새로운 주요 기능 중 하나 는 이제 계산할 수 있고 별도로 설치된 새로운 " "프로그램의 도움으로 테스트 범위 결과를 표시 할 수
go test
있다는 것go tool cover
입니다.이
cover
도구는go.tools
하위 저장소의 일부입니다 . 실행하여 설치할 수 있습니다.
$ go get golang.org/x/tools/cmd/cover
커버 도구는 두 가지 작업을 수행합니다.
- 먼저 "
go test
"에-cover
플래그 가 지정되면 자동으로 실행되어 패키지의 소스를 다시 작성하고 계측 문을 삽입합니다. 그런 다음 테스트가 컴파일되고 평소와 같이 실행되며 기본 커버리지 통계가보고됩니다.
$ go test -coverprofile fmtcoverage.html fmt
ok fmt 0.060s coverage: 91.4% of statements
$
둘째,보다 자세한 보고서의 경우 "테스트 진행"에 대한 다양한 플래그가 ""로 호출 된 커버 프로그램이
go tool cover
분석 할 수있는 커버리지 프로필 파일을 생성 할 수 있습니다 .
Frank Shearar 는 다음과 같이 언급합니다 .
최신 버전의 Go (2013/09/19)는 다음을 사용합니다.
go test -coverprofile <filename> <package name>
커버리지 통계를 생성하고 분석하는 방법에 대한 자세한 내용은 명령을 실행하여 찾을 수 있습니다.
$ go help testflag
$ go tool cover -help
Ivan Black 은 의견에서 언급합니다 .
go test -coverprofile cover.out
그런 다음 기본 브라우저에서
go tool cover -html=cover.out
열립니다cover.out
.
브라우저가 열릴 때까지 기다릴 필요도 없으므로이 별칭을 정의했습니다.
alias gc=grep -v -e " 1$" cover.out
그건 난 그냥 입력 gc
하고, 모든 라인의 목록이 없습니다 아직 적용 (여기를하십시오에 coverage.out
선이 없습니다 "로 끝나는 1
").
go test -coverprofile cover.out
다음 go tool cover -html=cover.out -o cover.html
열 cover.html
브라우저에서
go tool cover -html=cover.out
는 자동으로 브라우저를 열지 만 내 시스템에서 작동하지 않습니다. 필요한 경우 브라우저를 열어두고 페이지를 새로 고치는 것을 선호합니다.
Go는 테스트 및 적용을위한 멋진 도구와 함께 제공됩니다. 모든 Go 도구는 잘 문서화 되어 있지만 공식 Go 블로그에서 The cover story 기사를go tool cover -help
읽는 것이 좋습니다 . 많은 예제가 있으며 강력히 추천합니다!
이 기능은 ~ / .bash_profile에 있습니다. (단지 터미널에 붙여 넣어 사용해 볼 수 있습니다).
cover () {
t="/tmp/go-cover.$$.tmp"
go test -coverprofile=$t $@ && go tool cover -html=$t && unlink $t
}
그런 다음 cd
go 프로젝트 / 패키지 폴더에 cover
. 그러면 현재 패키지의 각 파일에 대해 테스트되고 테스트되지 않은 코드를 보여주는 시각적 도구가 브라우저에 열립니다. 매우 유용한 명령! 아직 100 % 테스트되지 않은 것을 찾기 위해 강력히 추천합니다! 표시된 결과는 파일 당입니다. 왼쪽 상단의 드롭 다운에서 모든 파일에 대한 결과를 볼 수 있습니다.
이 명령을 사용하면 다음과 같은 패키지의 적용 범위를 확인할 수도 있습니다.
cover fmt
이 명령의 터미널 출력은 다음과 같습니다.
ok fmt 0.031s coverage: 91.9% of statements
브라우저에서이 도구가 테스트로 다루지 않은 모든 코드 줄이 빨간색으로 표시되는 것을 볼 수 있습니다.
브라우저에서 열지 않고 html 커버리지 파일을 저장하는 것도 가능합니다. Jenkins와 같은 CI 도구에서 테스트 + 커버리지를 실행할 때 매우 유용합니다. 이렇게하면 중앙 서버에서 커버리지 파일을 제공 할 수 있으며 전체 팀은 각 빌드의 커버리지 결과를 볼 수 있습니다.
$ go tool
6a
6c
6g
6l
addr2line
api
cgo
cov
dist
ebnflint
fix
gotype
nm
objdump
pack
pprof
prof
vet
yacc
$ go tool cov -h
usage: cov [-lsv] [-g substring] [-m minlines] [6.out args...]
-g specifies pattern of interesting functions or files
go tool cov: exit status 1
$
나는 그것을 사용하지 않았습니다. 이것이 내가 아는 전부입니다.
~/go/pkg/tool/linux_amd64
는 어제의 마지막 Go 빌드와 일치합니다.
터미널에서 직접 기능별로 커버되지 않은 라인을보고 싶다면이 목적을 위해 커버 도구를 다시 작성했습니다. https://github.com/gregoryv/uncover 에서 사용할 수 있습니다 .
용법
go get -u github.com/gregoryv/uncover/...
go test -coverprofile /tmp/c.out
uncover /tmp/c.out
스크린 샷
당신이 사용하는 경우 VSCode을 이 기능은 상자를 지원 (IS 그러나 기본적으로 비활성화 )
저장 + 커버리지보고에 대한 테스트를 켜십시오.
https://github.com/microsoft/vscode-go/wiki/On-Save-features
그것은 당신의 편집기에서 어떤 줄이 다루어지지 않는지 보여줄 것입니다.
빠르고 쉬운 방법은 내장 go와 함께 제공되는 커버리지 도구를 사용하는 것입니다.
$ go test -coverprofile cp.out // 하나의 라이너 비율로 커버리지를 방출합니다.
위의 명령을 실행 한 후 코드 커버리지를 시각적으로보고 싶은 경우 (예 : 커버 된 문 및 누락 된 등)
$ go 도구 커버 -html = cp.out
참고 : 커버리지를 보려는 폴더에서 위의 명령을 실행해야합니다.
gaia-docker / base-go-build Docker Image를 사용해보세요 .
커버리지를 빌드하고 테스트하는 데 필요한 모든 것이 포함 된 Docker 이미지입니다. Docker 컨테이너 내에서 테스트 커버리지를 실행하면 프로젝트의 테스트 커버리지 결과가 포함 된 .cover 폴더가 생성 됩니다.
docker run --rm -v "$PWD":$PROJECT_PATH -w $PROJECT_PATH $BUILDER_IMAGE_NAME /go/script/coverage.sh
모든 프로젝트의 폴더에서 실행 되는 테스트 커버리지 스크립트는 .cover 폴더 내에 junit 및 각 폴더에 대한 커버리지 보고서를 생성하고 모든 프로젝트의 테스트에 대한 커버리지 보고서를 결합합니다.
Codecov는 커버리지 결과를 수집하는 스크립트도 제안합니다. 여러 파일
Golang에 대한 테스트 범위
go get github.com/axw/gocov/gocov
go get -u gopkg.in/matm/v1/gocov-html
올바르게 설치되었는지 확인하고 터미널에서 액세스 할 수 있습니다.
테스트 케이스 실행
테스트 케이스를 실행하면 파일을 기반으로 .json 파일이 다시 작성됩니다. 코드 커버리지 보고서가 .html 파일로 표시됩니다.
gocov test >your_Coverage_report.json
테스트 케이스가 완료되면 .json을 사용하여 .html 파일로 보고서 생성
gocov-html your_Coverage_report.json >your_Coverage_report.html
참고
go lang 용 GoTest Coverage Tool
대체 방법
Go Native Test 커버리지
go test -coverprofile=coverage.out
go tool cover -html=coverage.out
go test -coverprofile <filename> <package name>