goc is a comprehensive coverage testing system for The Go Programming Language, especially for some complex scenarios,like system testing code coverage collection and accurate testing.
Note:
This readme and related documentation are Work in Progress.
To install goc tool, you need to install Go first (version 1.11+ is required), then:
go get -u github.com/qiniu/goc
You can use goc tool in many scenarios.
Goc can collect code coverages at runtime for your long-run golang applications. To do that, normally just need three steps:
- use
goc server
to start a service registry center:➜ simple-go-server git:(master) ✗ goc server
- use
goc build
to build the target service, and run the generated binary. Here let's take the simple-go-server project as example:➜ simple-go-server git:(master) ✗ goc build . ... // omit logs ➜ simple-go-server git:(master) ✗ ./simple-go-server
- use
goc profile
to get the code coverage profile of the started simple server above:Enjoy, Have Fun!➜ simple-go-server git:(master) ✗ goc profile mode: atomic enricofoltran/simple-go-server/main.go:30.13,48.33 13 1 enricofoltran/simple-go-server/main.go:48.33,50.3 1 0 enricofoltran/simple-go-server/main.go:52.2,65.12 5 1 enricofoltran/simple-go-server/main.go:65.12,74.46 7 1 enricofoltran/simple-go-server/main.go:74.46,76.4 1 0 ...
- Support code coverage collection for system testing.
- Support code coverage counters clear for the services under test at runtime.
- Support develop mode towards accurate testing.
- Support code coverage diff based on Pull Request.
- Optimize the performance costed by code coverage counters.
We welcome all kinds of contribution, including bug reports, feature requests, documentation improvements, UI refinements, etc.
Goc is released under the Apache 2.0 license. See LICENSE.txt