How to get coverage for multiple files in GOLANG

874 views Asked by At

I have a package in GO-LANG that has several files implementing it. (all files are in the same directory)

file1: mypackage.go
package mypackage
func f1 () {}

file2: mypackage_addition.go
package mypackage
func f2 () {}

file3: mypackage_test.go
package mypackage
import "testing"
func TestF1 (t *testing.T) { 
    f1()
}

file4: mypackageAddition_test.go
package mypackage
import "testing"
func TestF2 (t *testing.T) { 
    f2()
}

I do this in order to get coverage:

mypackage> $ tree
.
├── mypackage.go
├── mypackageAddition_test.go
├── mypackageAdditions.go
└── mypackage_test.go

0 directories, 4 files
mypackage> $ go test -v -coverprofile cover.out ./...
=== RUN   TestF2
--- PASS: TestF2 (0.00s)
=== RUN   TestF1
--- PASS: TestF1 (0.00s)
PASS
coverage: 0.0% of statements
ok      github.com/MyDevelopment/mypackage  0.701s  coverage: 0.0% of statements
mypackage> $ go tool cover -html=cover.out -o cover.html
mypackage> $ open cover.html 

enter image description here enter image description here

When I open the html, I only get coverage for f1().
f2 is called (I verified it in debug), and the run of f2 is represented in the text, but not in the html file.

Any help is appreciated.

1

There are 1 answers

0
Nick Rucci On BEST ANSWER

Just reiterating what is in my comment

So after testing this I thought the same thing but it is looking like when I hit the dropdown and switch to mypackage_adding.go, f2() is covered. It is just in a different file. Just change the file in the dropdown in the HTML page.