2020-05-21 06:58:40 +00:00
# goc
2020-05-24 03:08:56 +00:00
[](https://goreportcard.com/report/github.com/qiniu/goc)
2020-05-14 07:29:31 +00:00


2020-05-21 06:30:41 +00:00

2020-05-23 08:44:13 +00:00
[](https://codecov.io/gh/qiniu/goc)
2020-05-24 03:08:56 +00:00
[](https://godoc.org/github.com/qiniu/goc)
2020-05-14 07:29:31 +00:00
2020-05-24 08:41:41 +00:00
goc is a comprehensive coverage testing system for The Go Programming Language, especially for some complex scenarios, like system testing code coverage collection and
2020-05-22 11:08:38 +00:00
accurate testing.
2020-06-19 06:18:52 +00:00
Enjoy, Have Fun!
2020-06-16 15:27:44 +00:00

2020-05-09 10:22:33 +00:00
## Installation
2020-05-22 11:08:38 +00:00
To install goc tool, you need to install Go first (**version 1.11+ is required**), then:
```go get -u github.com/qiniu/goc```
## Examples
You can use goc tool in many scenarios.
### Code Coverage Collection for your Golang System Tests
2020-05-24 08:36:17 +00:00
Goc can collect code coverages at runtime for your long-run golang applications. To do that, normally just need three steps:
2020-05-22 11:08:38 +00:00
1. use `goc server` to start a service registry center:
```
➜ simple-go-server git:(master) ✗ goc server
```
2020-05-24 08:41:41 +00:00
2. use `goc build` to build the target service, and run the generated binary. Here let's take the [simple-go-server ](https://github.com/CarlJi/simple-go-server ) project as example:
2020-05-22 11:08:38 +00:00
```
➜ simple-go-server git:(master) ✗ goc build .
... // omit logs
➜ simple-go-server git:(master) ✗ ./simple-go-server
```
3. use `goc profile` to get the code coverage profile of the started simple server above:
```
➜ 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
...
```
Enjoy, Have Fun!
## RoadMap
- [x] Support code coverage collection for system testing.
2020-05-31 07:31:40 +00:00
- [x] Support code coverage counters clear for the services under test at runtime.
2020-05-22 11:08:38 +00:00
- [ ] Support develop mode towards accurate testing.
2020-05-24 08:41:41 +00:00
- [ ] Support code coverage diff based on Pull Request.
2020-05-22 11:08:38 +00:00
- [ ] Optimize the performance costed by code coverage counters.
## Contributing
2020-06-19 06:18:52 +00:00
We welcome all kinds of contribution, including bug reports, feature requests, documentation improvements, UI refinements, etc.
Thanks to all [contributors ](https://github.com/qiniu/goc/graphs/contributors )!!
2020-05-22 11:08:38 +00:00
## License
2020-05-24 08:53:58 +00:00
Goc is released under the Apache 2.0 license. See [LICENSE.txt ](https://github.com/qiniu/goc/blob/master/LICENSE )