Go provides a testing package, containing many tools for unit testing purposes.
Preparation
Let's just practice, first prepare a Cube struct, the resulting object variable of the struct will later be used as testing material.
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 }
Save the code above in the training1.go file
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) } }
The t.Logf() method is used to display a log. This method is equivalent to fmt.Printf() .
The Errorf() method is used to display a log followed by a statement that a fail occurred during testing.
The way to execute testing is to use the go test command. Because the struct being tested is in the bab55.go file, when executing the test using go test, the bab55_test.go and bab55.go file names need to be written as arguments. The -v or verbose argument is used to display all log output during testing.
Run the application as shown in the image below, it can be seen that no tests have failed. OK, then try changing the calculation formula for the Keliling() method. The purpose of this change is to find out how the fail marker appears when a test fails.
func (k Cube) Perimeter() float64 { return k.Side * 15 }
After that run the test again.
Disclaimer: All resources provided are partly from the Internet. If there is any infringement of your copyright or other rights and interests, please explain the detailed reasons and provide proof of copyright or rights and interests and then send it to the email: [email protected] We will handle it for you as soon as possible.
Copyright© 2022 湘ICP备2022001581号-3