Введение
Сегодня хочется немного рассказать о написании тестов в проектах написанных на Golang.
В плане тестирования в Go подход очень простой а точнее примитивный. Дело в том, что Go за тем как писать и организовывать тесты разработчик должен следить сам, т.е. вся ответственность на разработчике приложения 🙂
Это в свою очередь приводит к тому, что привычного инструментария для тестирования не так много, но зато он уже есть в коробке.
А вот что есть в этой самой коробке и как это можно приукрасить я и хочу рассказать.
Первый простой тест
Задача: Написать функцию, которая прибавляет к целому числу два и возвращает его в качестве результата.
В первую очередь мы пишем тест. Файл с тестом назовем numberator_test.go, это первое что нужно знать, все тесты в go должны быть в файлах с постфиксом _test.go.
Вот простейший пример теста:
package numberator import "testing" func TestNumberIncrement(t *testing.T) { // если результат выполнения // функции не равен сумме 5+2 // то добавляем ошибку if NumberIncrement(5) != 5+2 { t.Error("Error! NumberIncrement(5) != 5+2") } }
Думаю суть теста понятна и не требует дополнительных объяснений.
Как же теперь нам запустить наш тест, делается это очень просто командой go test:
go test ./
Улучшаем наш тест
Наш тест выполняется и успешно падает, вроде бы все хорошо, но хотелось бы сделать наш тест не только работающим и выполняющим свою функцию но и более приятным для нас разработчиков.
Для этого есть очень хороший пакет – https://github.com/stretchr/testify, который нам с этим и поможет.
Поставить его очень просто: go get github.com/stretchr/testify
Перепишем наш тест с помощью этого пакета:
package numberator import ( "github.com/stretchr/testify/assert" "testing" ) func TestNumberIncrement(t *testing.T) { // задаем здесь наше правило // результат NumberIncrement(5) должен быть равен 5+2 assert.Equal(t, NumberIncrement(5), 5+2, "NumberIncrement(5) != 5+2") }
Теперь наш тест стал понятнее и сам говорит о своих ожиданиях, не так ли?
В этом же пакете есть много дополнительных методов для улучшения наших с вами тестов. Со всеми возможностями этого пакета можно ознакомиться на https://godoc.org/github.com/stretchr/testify.
Заключение
Тесты это хорошо, а понятные тесты это еще лучше!