Golang testing

From wikinotes
Revision as of 21:51, 6 June 2022 by Will (talk | contribs)

Go ships with a test suite.

Documentation

testing https://pkg.go.dev/testing@go1.18.3

Usage

go test -run      # run all tests
go test -run Foo  # run top-level tests containing 'Foo'

Example

The builtin go test framework is fairly minimalist.
Tests are just functions, you can loop them if useful,
And you can use the following tools to evaluate tests:

func TestHello(t *testing.T) {
    // log message and fail (but continue executing)
    t.Errorf("An expectation was not satisfied")
    t.Fail()         // mark test as failed, but continue
    t.FailNow()      // mark test as failed and stop executing

    t.Skip("Reason") // log, and stop executing

    t.TempDir()      // provides a tempdir that is deleted once test finishes running
}
// myproject/mypackage/mylib.go

package mypackage

func Hello(name string) string {
    return "Hello, " + name
}
// myproject/mypackage/mylib_test.go

package mypackage

import "testing"

func TestHello(t *testing.T) {
    res := Hello("Adam")
    if res != "Hello, Adam" {
        t.Errorf("Hello() result did not match")
    }
}