Как 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 далеко не так, вы должны продолжать учиться!