Welcome to this comprehensive guide on Go Test Functions! In this lesson, we'll delve into the world of testing in Go, focusing on the TestXxx functions. By the end of this guide, you'll have a solid understanding of testing principles and practical applications in Go. Let's get started!
Testing is an essential part of software development. It helps us ensure that our code works as expected, is reliable, and can be maintained and extended with confidence. In Go, we use the built-in testing package to write and run tests for our functions and packages.
Go test functions are named Test* (e.g., TestAdd, TestSubtract). These functions are executed automatically when the go test command is used. They help us verify that our functions behave as intended under various conditions.
Let's create a simple addition function and write a test for it.
package main
func Add(a, b int) int {
return a + b
}
func TestAdd(t *testing.T) {
if Add(2, 3) != 5 {
t.Error("TestAdd failed. Expected 5, got ", Add(2, 3))
}
}In the example above, we've created a simple Add function and a test function called TestAdd. The test function takes a t *testing.T parameter, which is a testing reporter that can log errors and failures. We've written a simple test case that checks if the Add function returns the correct result for the input 2 and 3.
To run the tests, open a terminal, navigate to your project directory, and run the go test command. If your tests pass, you'll see a success message. If any tests fail, Go will output the error message from the failing test.
$ go test
PASS
ok main 0.026sYou can write multiple test cases for the same function to test various scenarios.
func TestAdd(t *testing.T) {
tests := []struct {
a, b int
expected int
}{
{2, 3, 5},
{-1, 2, 1},
{0, 0, 0},
}
for _, test := range tests {
if Add(test.a, test.b) != test.expected {
t.Error("TestAdd failed. Expected ", test.expected, ", got ", Add(test.a, test.b))
}
}
}In this example, we've defined a slice of test cases and iterate through them to test various scenarios.
What should be the output when running `go test` on a project containing passing tests?
That's it for this lesson! In the next lesson, we'll dive deeper into Go testing, exploring more testing tools and best practices. Until then, happy coding! 🚀