Тесты в Go встроены в тулчейн. Создаёшь файл _test.go, пишешь функции func TestXxx(t *testing.T). Запускаешь go test ./... — и готово. t.Error/t.Fatal для ошибок, t.Run для подтестов. Нет assert-библиотек из коробки — идиоматично использовать if + t.Errorf. Тестовый файл лежит рядом с кодом в том же пакете (или с суффиксом _test в имени пакета для black-box тестов). Флаг -cover покажет покрытие.