Merge Unit Test Coverage Data
To get the coverage report, first make sure all the requirements are met and then run Keploy test as usual with your application command:
keploy test -c "your_application_command"
After successful execution of this command, A coverage report would be generated inside the test-run folder of keploy/reports.
keploy
├── reports
│ └── test-run-0
│ ├── coverage.yaml
│ └── test-set-0-report.yaml
└── test-set-0
├── mocks.yaml
└── tests
├── test-1.yaml
└── test-2.yaml
🛠️ Language Specific Requirements
Programming Language | Prerequisites |
---|---|
go | 1. The application should have a graceful shutdown to stop the API server on SIGTERM or SIGINT signals. Refer appendix for basic implementation of graceful shutdown function. 2. The go binary should be built with -cover flag. |
Graceful Shutdown
It is important that the application is shutdown gracefully. In case of Golang, function for graceful shutdown:
func GracefulShutdown() {
stopper := make(chan os.Signal, 1)
// listens for interrupt and SIGTERM signal
signal.Notify(stopper, os.Interrupt, os.Kill, syscall.SIGKILL, syscall.SIGTERM)
go func() {
select {
case <-stopper:
os.Exit(0)
}
}()
}
func main() {
port := "8080"
r := gin.Default()
r.GET("/:param", getURL)
r.POST("/url", putURL)
// should be called before starting the API server from main()
GracefulShutdown()
r.Run()
}
Usage
For keploy test coverage the binary must built with -cover
flag:
go build -cover
To get the coverage data for unit tests :
go test -cover ./... -args -test.gocoverdir="PATH_TO_UNIT_COVERAGE_FILES"
To merge coverage data of unit tests with Keploy provided coverage :
go tool covdata textfmt -i="PATH_TO_UNIT_COVERAGE_FILES","./coverage-reports" -o combined-coverage.txt
To get the coverage related information for merged coverage data :
go tool cover -func combined-coverage.txt