| |
| # Rudimentary test of testing.Coverage(). |
| |
| [short] skip |
| [!GOEXPERIMENT:coverageredesign] skip |
| |
| # Simple test. |
| go test -v -cover -count=1 |
| |
| # Make sure test still passes when test executable is built and |
| # run outside the go command. |
| go test -c -o t.exe -cover |
| exec ./t.exe |
| |
| -- go.mod -- |
| module hello |
| |
| go 1.20 |
| -- hello.go -- |
| package hello |
| |
| func Hello() { |
| println("hello") |
| } |
| |
| // contents not especially interesting, just need some code |
| func foo(n int) int { |
| t := 0 |
| for i := 0; i < n; i++ { |
| for j := 0; j < i; j++ { |
| t += i ^ j |
| if t == 1010101 { |
| break |
| } |
| } |
| } |
| return t |
| } |
| |
| -- hello_test.go -- |
| package hello |
| |
| import "testing" |
| |
| func TestTestCoverage(t *testing.T) { |
| Hello() |
| C1 := testing.Coverage() |
| foo(29) |
| C2 := testing.Coverage() |
| if C1 == 0.0 || C2 == 0.0 { |
| t.Errorf("unexpected zero values C1=%f C2=%f", C1, C2) |
| } |
| if C1 >= C2 { |
| t.Errorf("testing.Coverage() not monotonically increasing C1=%f C2=%f", C1, C2) |
| } |
| } |
| |