O'Reilly logo

Introducing Go by Caleb Doxsey

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Chapter 9. Testing

Programming is not easy; even the best programmers are incapable of writing programs that work exactly as intended every time. Therefore, an important part of the software development process is testing. Writing tests for our code is a good way to ensure quality and improve reliability.

Go includes a special program that makes writing tests easier: go test. To illustrate how go test works, let’s create some tests for the package we made in Chapter 8. In the chapter8/math folder, create a new file called math_test.go. The Go compiler knows to ignore code in any files that end with _test.go, so the code defined in this file is only used by go test (and not go install or go build).

The ~/src/golang-book/chapter8/math/math_test.go file should contain the same package math we saw before:

package math

Then we import the special testing package and define a function that starts with the word Test (case matters) followed by whatever we want to name our test. We’ll be testing the Average function we wrote before, so let’s name it TestAverage:

package math

import "testing"

func TestAverage(t *testing.T) {
    v := Average([]float64{1,2})
    if v != 1.5 {
        t.Error("Expected 1.5, got ", v)
    }
}

For the body of the function, we invoke the Average function on a hardcoded slice of floats (Average([]float64{1,2})). We then take that value and compare it to 1.5 and if they’re not the same, we use the special t.Error function (which is very much like fmt.Println) to signal an error to ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required