Writing Go tests
A Go test file is simply a set of functions with the following signature:
func Test<Name>(*testing.T)
Here, <Name> is an arbitrary name that reflects the purpose of the test. The test functions are intended to exercise a specific functional unit (or unit test) of the source code.
Before we write the test functions, let us review the code that will be tested. The following source snippet shows a simple implementation of a mathematical vector with Add, Sub, and Scale methods (see the full source code listed at https://github.com/vladimirvivien/learning-go/ch12/vector/vec.go). Notice that each method implements a specific behavior as a unit of functionality, which will make it easy to test:
type Vector interface {
Add(other Vector) Vector
Sub(other Vector) Vector
Scale(factor float64)
...
}
func New(elems ...float64) SimpleVector {
return SimpleVector(elems)
}
type SimpleVector []float64
func (v SimpleVector) Add(other Vector) Vector...