Покрытие тестами: что измеряет go test -cover и чего это не значит
go test -cover измеряет покрытие операторов: какая доля строк кода была выполнена во время тестов. Это и вся правда о метрике — она не говорит, что поведение проверено. Строка, выполненная без единого утверждения о результате, засчитывается как покрытая; ветвление, где проверена только одна ветка, тоже даёт высокий процент. Отсюда практическое отношение: покрытие полезно как индикатор непокрытого, а не как цель. Смотреть надо не на число, а на HTML-отчёт go tool cover -html, где непокрытые строки подсвечены красным — и в них регулярно обнаруживаются целые ветки обработки ошибок. Две полезные детали. Флаг -coverpkg позволяет считать покрытие пакетов, вызываемых из тестов другого пакета: без него интеграционный тест покажет ноль по проверяемому коду. И начиная с Go 1.20 покрытие собирается с целых программ, а не только с тестов, — можно измерить, какая часть кода реально исполняется в интеграционном прогоне.