Модульное тестирование Golang — это долгий путь | Месяц темы Go

Go
Модульное тестирование Golang — это долгий путь | Месяц темы Go

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

Структура проекта

Структура нашего проекта должна выглядеть следующим образом:calc.goбудет соответствоватьcalc_test.goФайл тестового примера:

example/
   |--calc.go
   |--calc_test.go

Давайте взглянемcalc.goСодержимое файла:

package example

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

соответствоватьcalc_test.goТестовый пример может быть таким:

package example

import "testing"

func TestAdd(t *testing.T) {
    if ans := Add(1, 2); ans != 3 {
        t.Errorf("1 + 2 expected be 3, but %d got", ans)
    }

    if ans := Add(-1, -2); ans != -3 {
        t.Errorf("-1 + -2 expected be -3, but %d got", ans)
    }
}

мы можем бежатьgo test, все тестовые случаи в этом пакете будут выполнены.

go testВведение в команду

Здесь мы используемgo testкоманда, эта команда автоматически прочитает имя исходного каталога в*_test.goфайл для создания и запуска исполняемого файла теста.

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

go testОписание параметра:

  • -bench regexp выполняет соответствующие бенчмарки, например: -bench=.
  • -крышка может просматривать покрытие
  • -run regexp запускает только функцию, соответствующую регулярному выражению, например: -run Array затем выполняет функцию, содержащую начало массива, этот параметр поддерживает подстановочные знаки*и частичные регулярные выражения, такие как^,$
  • -v показать подробности теста

Например, выполните все тестовые случаи в файле и используйте-vпоказать подробную информацию

$ go test helloworld_test.go
ok          command-line-arguments        0.003s
$ go test -v helloworld_test.go
=== RUN   TestHelloWorld
--- PASS: TestHelloWorld (0.00s)
        helloworld_test.go:8: hello world
PASS
ok          command-line-arguments        0.004s

Суммировать

В этой статье кратко рассказывается, как писать модульные тесты Golang иgo testБазовое использование Golang, но модульное тестирование Golang далеко не так, вы должны продолжать учиться!