Resolving Code Coverage Discrepancy in Separate Folders for GO Projects
While working on a project with a particular structure, where packages and their tests were located in separate folders, you encountered an issue. Despite the execution of code in stuff.go from stuff_test.go, the coverage report displayed 0.0%.
Possible Cause and Solution
The issue arises due to GO's default coverage analysis behavior, which only applies to the package being tested. To overcome this, the -coverpkg flag can be utilized to specify the packages for which coverage data should be collected.
By using the -coverpkg option, you can specify that tests in test/stuff/stuff_test.go should also consider code coverage for stuff/stuff.go. This ensures that the coverage analysis encompasses all relevant packages.
Here's an example command that demonstrates the usage of -coverpkg:
go test ./test/... -coverpkg ./...
This command runs tests in packages matching the test path and includes coverage information for all packages matching ./....
Viewing the Coverage Report
Once the tests have executed, you can generate and view the coverage report using the following commands:
go tool cover -html=cover.out
This command generates an HTML coverage report named cover.out, which can be opened in a web browser to visualize the coverage data.
The above is the detailed content of Why Is My Go Code Coverage Showing 0% Despite Successful Test Execution in Separate Folders?. For more information, please follow other related articles on the PHP Chinese website!