Go 단위 테스트를위한 코드 커버리지 생성에 성공한 사람이 있습니까? 웹에서 해당 도구를 찾을 수 없습니다.
답변
참고 로 이동 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는 테스트 및 적용을위한 멋진 도구와 함께 제공됩니다. 모든 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 test -v -coverprofile cover.out ./YOUR_CODE_FOLDER/...
go tool cover -html=cover.out -o cover.html
open cover.html
HTML 파일에는 모든 파일로 이동할 수있는 드롭 다운 버튼이 있습니다.
답변
$ 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
$
나는 그것을 사용하지 않았습니다. 이것이 내가 아는 전부입니다.
답변
터미널에서 직접 기능별로 커버되지 않은 라인을보고 싶다면이 목적을 위해 커버 도구를 다시 작성했습니다. 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
그것은 당신의 편집기에서 어떤 줄이 다루어지지 않는지 보여줄 것입니다.
답변
커버리지 리포트 →
a) 모든 테스트를 실행하고 적용 범위 활성화-> go test ./... -coverprofile coverage.out
b) 개별 기능에 대한 커버리지 및 전체 커버리지 받기 → go tool cover -func coverage.out
c) 해당 라인과 테스트에서 다루지 않은 라인을 참조하십시오 → go tool cover -html=cover.out -o coverage.html
. coverage.html
브라우저에서 생성 된 파일을 열고 자세한 커버리지 정보를 분석합니다.