Go 提供了一个测试包,其中包含许多用于单元测试的工具。
准备
我们来练习一下,首先准备一个 Cube 结构体,该结构体的对象变量稍后将用作测试材料。
package main import "math" type Cube struct { Sisi float64 } func (k Cube) Volume() float64 { return math.Pow(k.Sisi, 3) } func (k Cube) Area() float64 { return math.Pow(k.Sisi, 2) * 6 } func (k Cube) circumference() float64 { return k.Sisi * 12 }
将上面的代码保存在training1.go文件中
package main import "testing" var ( cube Cube = Cube{4} volume Should float64 = 64 area Should float64 = 96 circumference Should float64 = 48 ) func TestCalculateVolume(t *testing.T) { t.Logf("Volume : %.2f", cube.Volume()) if cube.Volume() != volumeShould { t.Errorf("WRONG! should be %.2f", volumeShould) } } func TestCalculateSurface(t *testing.T) { t.Logf("Area : %.2f", cube.Area()) if cube.Area() != areaShould { t.Errorf("WRONG! should be %.2f", areaShould) } } func TestCalculatePerimeter(t *testing.T) { t.Logf("Perimeter : %.2f", cube.Perimeter()) if cube.Perimeter() != circumferenceShould { t.Errorf("WRONG! should be %.2f", circumferenceShould) } }
t.Logf()方法用于显示日志。该方法相当于 fmt.Printf() .
Errorf() 方法用于显示一条日志,后跟一条测试期间发生失败的语句。
执行测试的方法是使用 go test 命令。由于被测试的结构体在 bab55.go 文件中,因此使用 go test 执行测试时,需要将 bab55_test.go 和 bab55.go 文件名写入为参数。 -v 或 verbose 参数用于显示测试期间的所有日志输出。
如下图所示运行应用程序,可以看到没有测试失败。好的,那么尝试更改 Keliling() 方法的计算公式。此更改的目的是找出测试失败时失败标记如何显示。
func (k Cube) Perimeter() float64 { return k.Side * 15 }
之后再次运行测试。
以上是Go 的单元测试的详细内容。更多信息请关注PHP中文网其他相关文章!