Có ai thành công trong việc tạo vùng phủ sóng mã cho các bài kiểm tra đơn vị Go không? Tôi không thể tìm thấy công cụ cho công cụ đó trên web.Cách đo độ bao phủ mã trong Golang?
Trả lời
Lưu ý rằng Go 1.2 (Q4 2013, rc1 is available) bây giờ sẽ hiển thị test coverage results:
One major new feature of
go test
is that it can now compute and, with help from a new, separately installed "go tool cover
" program, display test coverage results.The
cover
tool is part of thego.tools
subrepository . It can be installed by running
$ go get golang.org/x/tools/cmd/cover
The cover tool does two things.
- First, when "
go test
" is given the-cover
flag, it is run automatically to rewrite the source for the package and insert instrumentation statements. The test is then compiled and run as usual, and basic coverage statistics are reported:
$ go test -coverprofile fmt
ok fmt 0.060s coverage: 91.4% of statements
$
Second, for more detailed reports, different flags to "go test" can create a coverage profile file, which the cover program, invoked with "
go tool cover
", can then analyze.
The latest versions of Go (2013/09/19) use:
go test -coverprofile <filename> <package name>
Details on how to generate and analyze coverage statistics can be found by running the commands
$ go help testflag
$ go tool cover -help
Ivan Black đề cập in the comments:
go test -coverprofile cover.out
and then
go tool cover -html=cover.out -o cover.html
openscover.html
in browser
Tôi thậm chí không muốn chờ cho trình duyệt để mở, vì vậy tôi định nghĩa bí danh này:
alias gc=grep -v -e " 1$" coverage.out
đó tôi chỉ cần gõ gc
, và có một danh sách của tất cả các dòng không chưa được điều chỉnh (ở đây: với một dòng coverage.out
không kết thúc bằng "1
").
Đúng ngay here, một số tài liệu here.
$ 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
$
Tôi chưa từng sử dụng, đây là tất cả những gì tôi biết.
bạn có phải cài đặt thủ công không? trong quá trình cài đặt đi cục bộ của tôi (đi phiên bản go1) nó không có ở đó. – oers
Tôi tin rằng nó được xây dựng bởi ./all.bash. Tôi không thể xác minh ATM, tôi không được phát hành vì tôi có CL đang chờ xử lý, nhưng tem thời gian nhị phân cov mà tôi thấy trong '~/go/pkg/tool/linux_amd64' khớp với phiên bản Go cuối cùng của ngày hôm qua. – zzzz
Có, hãy chạy ./all.bash và bạn sẽ có nó. Cảm ơn sự giúp đỡ, jnml! –
Đi kèm với công cụ tuyệt vời để kiểm tra và bảo hiểm. Mặc dù tất cả các công cụ Go đều được ghi thành tài liệu go tool cover -help
Tôi khuyên bạn nên đọc The cover story article on the official Go blog. Nó có rất nhiều ví dụ và tôi khuyên bạn nên sử dụng nó!
Tôi có hàm này trong ~/.bash_profile của mình. (bạn có thể chỉ cần dán nó trong thiết bị đầu cuối để cho nó một thử).
cover() {
t="/tmp/go-cover.$$.tmp"
go test -coverprofile=$t [email protected] && go tool cover -html=$t && unlink $t
}
Sau đó chỉ cần cd
vào một dự án đi thư mục/gói và gõ cover
. Thao tác này sẽ mở ra một công cụ trực quan trong trình duyệt hiển thị cho bạn mã được kiểm tra và chưa được kiểm tra cho mỗi tệp trong gói hiện tại. Lệnh rất hữu ích! Tôi khuyên bạn nên tìm kiếm những gì chưa được kiểm tra 100%! Các kết quả được hiển thị cho mỗi tệp. Từ menu thả xuống ở trên cùng bên trái, bạn có thể xem kết quả cho tất cả các tệp.
Với lệnh này, bạn cũng có thể kiểm tra độ che phủ của bất kỳ gói ví dụ:
cover fmt
Sản lượng trong thiết bị đầu cuối từ lệnh này sẽ là:
ok fmt 0.031s coverage: 91.9% of statements
Bên cạnh đó trong trình duyệt của bạn, bạn sẽ thấy công cụ này hiển thị bằng tất cả các dòng mã màu đỏ không được kiểm tra:
Cũng có thể chỉ lưu tệp tin bảo hiểm html thay vì mở tệp trong trình duyệt. Điều này rất hữu ích trong các trường hợp khi kiểm thử của bạn + vùng phủ sóng được chạy bởi công cụ CI như Jenkins. Bằng cách đó bạn có thể phục vụ các tập tin bảo hiểm từ một máy chủ trung tâm và toàn bộ nhóm sẽ có thể xem kết quả bảo hiểm cho mỗi bản dựng.
Đoạn mã được sao chép từ đây https://coderwall.com/p/rh-v5a/get-coverage-of-golang-test –
Thú vị, tôi sẽ kiểm tra nó. +1 – VonC
Điều này thật tuyệt vời! Cám ơn vì đã chia sẻ. Đã kết thúc việc chuyển sang tập lệnh thử nghiệm vì tôi muốn thử nghiệm gói chính trong chương trình của mình. Chúc mừng –
Lấy cảm hứng từ menu trợ giúp và câu trả lời khác cho câu hỏi này, chỉ cần chạy:
f=cover.out; if [ -f $f ]; then rm $f; fi; go test -coverprofile $f && go tool cover -html $f
Cố gắng sử dụng gaia-docker/base-go-build Docker ảnh.
Đây là hình ảnh Docker chứa tất cả những gì bạn cần để xây dựng và kiểm tra mức độ phù hợp. Chạy phạm vi kiểm tra bên trong vùng chứa Docker tạo .cover thư mục có kết quả kiểm tra dự án của bạn.
docker run --rm -v "$PWD":$PROJECT_PATH -w $PROJECT_PATH $BUILDER_IMAGE_NAME /go/script/coverage.sh
Các test coverage script chạy trên tất cả các dự án thư mục và tạo ra, bên trong .cover thư mục báo cáo bảo hiểm cho mỗi thư mục junit và, và một báo cáo bảo hiểm kết hợp của tất cả các dự án thử nghiệm.
Test Coverage for Golang
go get github.com/axw/gocov/gocov go get -u gopkg.in/matm/v1/gocov-html
Kiểm tra Nó được cài đặt đúng và bạn có thể truy cập từ ga
Run the Test Case
bạn Nếu bạn chạy các trường hợp thử nghiệm nó sẽ Reder File .json Dựa trên các tập tin bạn sẽ nhận Báo cáo Phạm vi Mã trong tệp .html
gocov test >your_Coverage_report.json
Khi trường hợp Kiểm tra của bạn được thực hiện, hãy tạo Báo cáo bằng .html.json
gocov-html your_Coverage_report.json >your_Coverage_report.html
Reference
GoTest Coverage Tool for go lang
bảo hiểmAlternate Method
Go Native thử nghiệm
go test -coverprofile=coverage.out
go tool cover -html=coverage.out
- 1. jUnit: Cách xác định mức độ bao phủ mã?
- 2. Sự khác biệt giữa độ bao phủ của mã và phạm vi phủ sóng trong sonar
- 3. Có thể đo độ bao phủ chức năng bằng gcov không?
- 4. Sự khác biệt giữa ba phương pháp phân tích độ bao phủ mã là gì?
- 5. Làm thế nào để tạo ra độ bao phủ mã tốt của logic dấu chấm động?
- 6. Cách đo # dòng mã trong dự án?
- 7. Golang: bảo vệ mã nguồn
- 8. Cách bao gồm mã html trong chế độ xem?
- 9. Có cách nào để lấy các chỉ số độ bao phủ mã được tạo từ OpenCover về Jenkins không?
- 10. Đo tốc độ mã bằng .net tính bằng mili giây
- 11. Mã gỡ lỗi Go (golang) trong Windows
- 12. Opacity điều khiển cho bao phủ lô
- 13. đo độ trễ trong tab mạng Chrome
- 14. Android: Đo/phát hiện vùng phủ sóng bằng ngón tay chạm trên màn hình (KHÔNG chỉ chạm vào tọa độ)
- 15. Chúng ta có thể nhận được độ bao phủ mã C++ bản địa trong VS2012 hoặc VS2010 không có MSTest không?
- 16. Đo lường phạm vi mã Scala trong testcases trong Eclipse
- 17. Cách triển khai đăng nhập dựa trên cấp độ trong golang?
- 18. Công cụ đo mã tốt?
- 19. Phạm vi mã đo tại Delphi
- 20. Di chuyển mã giải mã Java sang Golang
- 21. Đo độ phân giải của `std :: clock()`
- 22. Bộ tính giờ để đo độ trễ
- 23. Đo độ cao khi tính toán khoảng cách trắc địa
- 24. Mức độ đo âm thanh với AVPlayer
- 25. Tải xuống tệp với số đo tiến độ trong VBA
- 26. Phạm vi kiểm tra mã đơn vị - bạn có bao phủ 100% không?
- 27. Đo khoảng cách ngắn
- 28. Lớp phủ màu Android - Chế độ PorterDuff
- 29. cách đo hiệu suất ngủ đông?
- 30. Micrô đo biên độ trực tiếp trong C#
Lưu ý rằng phiên bản mới nhất của Go (2013/09/19) sử dụng 'go test -coverprofile' –
@FrankShearar Ok. Tôi đã bao gồm bình luận của bạn trong câu trả lời cho khả năng hiển thị nhiều hơn. – VonC
'go test -coverprofile cover.out' và sau đó' go tool cover -html = cover.out -o cover.html' mở 'cover.html' trong trình duyệt –