The Go language provides a powerful unit testing framework that can be used to verify the correctness of the code. When setting up unit tests, create unit test functions that start with Test and use assertion functions (such as Equal, True, etc.) to verify expected behavior. Unit testing can be easily implemented by creating a _test.go file and including unit test functions. These unit tests can be used to test complex functionality such as simple functions, HTTP endpoints, or database queries to ensure that the code produces the correct output under various inputs.
Unit testing using Go: Practical cases
The Go language provides a powerful unit testing framework that enables developers to Easily test the correctness of their code. In this article, we'll look at how to do unit testing with Go and explain how it works with a practical example.
Set up unit tests
To set up unit tests, create a new file named _test.go
in your project. This file will contain your unit test functions, they should start with Test
:
import "testing" func TestSomething(t *testing.T) { // 你的测试代码 }
Assertions
Unit tests verify the code by using assertions expected behavior. Go provides a variety of assertion functions:
Equal(a, b)
: Assert that a
and b
are equalNotEqual(a, b)
: Assert that a
and b
are not equal True(x)
: Assert x
is trueFalse(x)
: Assert that x
is falseExample: Calculation function
Let’s create a simple Add
function and write a unit test for it:
func Add(a, b int) int { return a + b }
import "testing" func TestAdd(t *testing.T) { tests := []struct { a int b int expected int }{ {1, 2, 3}, {3, 4, 7}, {-1, 10, 9}, } for _, tt := range tests { result := Add(tt.a, tt.b) if result != tt.expected { t.Errorf("Add(%d, %d) = %d, expected %d", tt.a, tt.b, result, tt.expected) } } }
Practical case
Above Testing ensures that the Add
function produces correct output under various inputs. Unit tests can also be used to test more complex functionality, such as HTTP endpoints or database queries.
For example, we can write a unit test for a simple REST API to verify the response of its GET
endpoint:
import "testing" import "net/http" import "net/http/httptest" import "encoding/json" type Response struct { Name string `json:"name"` Address string `json:"address"` } func TestGetUser(t *testing.T) { req, err := http.NewRequest("GET", "/user/1", nil) if err != nil { t.Fatal(err) } rr := httptest.NewRecorder() handler := http.HandlerFunc(GetUser) handler.ServeHTTP(rr, req) var response Response err = json.NewDecoder(rr.Body).Decode(&response) if err != nil { t.Fatal(err) } if response.Name != "John Doe" || response.Address != "123 Main St" { t.Errorf("Unexpected response: %v", response) } }
The above is the detailed content of How to perform unit testing using golang framework?. For more information, please follow other related articles on the PHP Chinese website!