Настройки Тесты пишутся в отдельных файлах, используя имя файла, который они тестируют Если имя файла : importantPkg.go , то имя файла с тестом должно быть: importantPkg_test.go Модульные тесты должны находиться в том же пакете Пакет testing используется для создания тестов и должен быть импортирован в каждом файле с тестами. sample.go --------- package main import "regexp” func IsValidEmail(addr string") bool { re, ok := regexp.Compile( .+@.+\..+ ) if ok != nil { panic("failed to compile regex") } else { return re.Match([]byte(addr)) } } sample_test.go -------------- package main import "testing" func TestIsValidEmail(t *testing.T) { data := "email@example.com" if !IsValidEmail(data) { t.Errorf("IsValidEmail(%v)=false, want true", data) } } Доступные функции тестирования: В пакете testing доступно множество функций для тестирования программного обеспечения Fail() - Пометить тест как неудавшийся (не пройденный) Errorf(string) - Пометить тест как неудачный и добавить сообщение FailNow() - Пометить тест как неудавшийся (не пройденный) и прервать текущий тест Fatalf(string) - Пометить тест как неудачный (не пройденный), прервать выполнение и добавить сообщение Logf() - Эквивалент функции Printf(), но выводит сообщение только при неуспешном тесте ==================================================================== Доступные функции тестирования | В пакете testing доступно множество функций для тестирования программного обеспечения | Fail() - Пометить тест как неудавшийся (не пройденный) I Errorf(string) - Пометить тест как неудачный и добавить сообщение | FailNow() - Пометить тест как неудавшийся (не пройденный) и прервать текущий тест | Fatalf(string) - Пометить тест как неудачный (не пройденный), прервать выполнение и добавить сообщение | Logf() - Эквивалент функции Printf(), но выводит сообщение только при неуспешном тесте ------------------------------------------------------------------------------ ТЕСТОВЫЕ ТАБЛИЦЫ func TestIsValidEmaiITable(t *testing.T) { //Срез анонимных структур table := []struct { email string want bool }{ //с их инициализацией {"email@exaaple.com", true}, {"missing@tld", false}, {"missing@tld", true}, } for _, data := range table { result := IsValidEmail(data.email) if result != data.want { t.Errorf("%v: %t, want: %t", data.email, result, data.want) } } //range } //foo