Skip to main content
Version: 2.0.0

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

Note: In case of java application, before running test subcommand, you need to clean the project by removing any previously generated file, and run install command.

mvn clean install -Dmaven.test.skip=true

🛠️ Language Specific Requirements

Programming LanguagePrerequisites
go1. 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.
pythonPython 3 and above
coverage.py
javascriptnyc
javaJacoco 0.8.8

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

Update package file

Update the package.json file that runs the application:

  "scripts": {
//other scripts
"test": "jest --coverage --collectCoverageFrom='src/**/*.{js,jsx}'",
"coverage:merge": "mkdir -p ./coverage && nyc merge ./coverage .nyc_output/out.json",
"coverage:report": "nyc report --reporter=lcov --reporter=text",
//other scripts
}

In test script, --coverage flag would trigger the report generation for jest. For report generation in other testing frameworks like mocha, intern, tap, refer https://istanbul.js.org/docs/tutorials/

To generate coverage report for your unit tests, Run:

npm test

To merge coverage data of unit tests with keploy tests, Run:

npm run coverage:merge

To get coverage related information for merged coverage data, Run:

npm run coverage:report