Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Golang: testing, test, unit test

Опишите шаги тестирования в Golang?

Этот вопрос проверяет знание принципов тестирования в Go, включая создание тестов, использование стандартных инструментов для тестирования и лучших практик.

Короткий ответ

В Go тестирование пакетов осуществляется через файлы, которые заканчиваются на _test.go, содержащие функции с префиксом Test. Для выполнения тестов используется команда go test. Это помогает автоматизировать процесс проверки корректности работы программ.

Длинный ответ

В Go тестирование производится с использованием стандартной библиотеки testing. Все тесты пишутся в отдельных файлах, которые заканчиваются на _test.go, и в них реализуются функции с префиксом Test. Эти функции тестируют отдельные части кода на предмет их корректности.

Создание теста

Каждый тест должен быть функцией, принимающей объект типа *testing.T. В этой функции вы можете использовать методы из *testing.T для проверки условий, таких как t.Errorf() для вывода ошибок, если тест не пройден.

Пример теста:

package main

import "testing"

func Add(a, b int) int {
    	return a + b
}

func TestAdd(t *testing.T) {
    	result := Add(2, 3)
    	if result != 5 {
        	t.Errorf("Expected 5, got %d", result)
    }
}

Запуск тестов

Для запуска тестов нужно использовать команду go test. Эта команда автоматически найдет все тестовые функции в пакете и выполнит их.

Тестирование нескольких случаев

Для тестирования нескольких случаев можно использовать таблицы тестов, что позволяет легко проверять различные входные данные и ожидаемые результаты.

Пример:

func TestAdd(t *testing.T) {
    	tests := []struct {
        	a, b, expected int
    	}{
        	{2, 3, 5},
        	{5, 7, 12},
        	{0, 0, 0},
    	}

    	for _, test := range tests {
        	result := Add(test.a, test.b)
        	if result != test.expected {
            		t.Errorf("Add(%d, %d) = %d; want %d", test.a, test.b, result, test.expected)
        	}
    	}
}

Запуск тестов с конкретным файлом

Можно запустить тесты только в одном конкретном файле, указав его имя:

go test -v my_test_file.go

В каких случаях использовать

  • Для автоматизации проверки функциональности кода.

  • Когда нужно быстро найти ошибки в изменениях, которые могут повлиять на существующий код.

  • В случаях, когда необходимо проверять несколько различных входных значений.

  • Когда вы хотите улучшить покрытие тестами всего кода, включая edge cases.

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    7

Навыки

  • Golang

    Golang

Ключевые слова

#testing

#test

#unit test

Подпишись на Golang Developer в телеграм

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.