Amalan terbaik untuk ujian fungsi Go: kes ujian yang jelas. Gunakan ujian dipacu jadual. Meliputi syarat sempadan. Kebergantungan olok-olok. Gunakan subtest. Ukur liputan ujian.
Amalan Terbaik untuk Pengujian Fungsi dalam Go
Pengujian fungsi dalam Go adalah penting untuk memastikan kebolehpercayaan kod. Berikut ialah beberapa amalan terbaik untuk membantu anda menulis ujian fungsi yang berkuasa:
1. Tentukan dengan jelas kes ujian:
Untuk setiap fungsi, tentukan dengan jelas tingkah laku yang akan diuji dan hasil yang dijangkakan. Ini akan membantu anda menumpukan pada ujian menulis yang memenuhi tujuan ujian khusus anda.
2. Gunakan ujian dipacu jadual:
Ujian dipacu jadual membolehkan anda membuat berbilang panggilan ke fungsi menggunakan set nilai input. Ini membantu mengurangkan kod pendua dan meningkatkan kebolehbacaan.
func TestSum(t *testing.T) { type testInput struct { a, b int want int } tests := []testInput{ {1, 2, 3}, {-5, 10, 5}, {0, 0, 0}, } for _, tt := range tests { got := Sum(tt.a, tt.b) if got != tt.want { t.Errorf("got: %d, want: %d", got, tt.want) } } }
3. Syarat sempadan tutup:
Selain menguji keadaan biasa, uji juga syarat sempadan input. Ini membantu mendedahkan masalah yang berpotensi dalam kes tepi.
4. Kebergantungan olok-olok:
Jika sesuatu fungsi bergantung pada kebergantungan luar, gunakan teknik mengejek untuk mengasingkan kebergantungan ini. Ini memastikan bahawa kami menguji fungsi itu sendiri dan bukan kebergantungannya.
import ( "testing" "github.com/golang/mock/gomock" ) func TestGetUserData(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() mockUserDataRepository := mock_user_data_repository.NewMockUserDataRepository(ctrl) userDataService := NewUserDataService(mockUserDataRepository) userID := 10 expectedData := user_data.UserData{Name: "John Doe"} mockUserDataRepository.EXPECT().Get(userID).Return(expectedData, nil) data, err := userDataService.GetUserData(userID) if err != nil { t.Errorf("unexpected error: %v", err) } if data != expectedData { t.Errorf("unexpected data: %v", data) } }
5. Gunakan subujian:
Ujian fungsi besar boleh dipecahkan kepada subujian yang lebih kecil. Ini membantu mengatur kod anda dan meningkatkan kebolehbacaan.
func TestSort(t *testing.T) { t.Run("empty array", func(t *testing.T) { arr := []int{} arrayCopy := Sort(arr) if !reflect.DeepEqual(arr, arrayCopy) { t.Errorf("sorting empty array results in a new array") } }) }
6. Ukur liputan ujian:
Gunakan alat liputan untuk mengukur sejauh mana ujian meliputi kod anda. Ini membantu mengenal pasti laluan kod yang belum diuji dan meningkatkan liputan ujian.
Dengan mengikuti amalan terbaik ini, anda boleh menulis ujian yang lebih cekap dan boleh dipercayai untuk fungsi Go anda.
Atas ialah kandungan terperinci Amalan terbaik untuk ujian fungsi Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!