вторник, 19 февраля 2019 г.

Go FAQ: Где вспомогательные функции для тестирования в Go?

Стандартный пакет testing Go позволяет легко создавать юнит-тесты, но в нем нет функций, предоставляемых в средах тестирования других языков, такие как функции утверждений (assert). Правильная обработка ошибок означает запуск других тестов после того, как один из них потерпел неудачу, поэтому человек, отлаживающий ошибку, получает полную картину того, что произошло не так. Для теста полезней сообщить, что isPrime дает неправильный ответ для 2, 3, 5 и 7 (или для 2, 4, 8 и 16), чем сообщить, что isPrime выдает неверный ответ для 2 и, следовательно, больше тестов не проводилось. Программист, который получает тестовый сбой, возможно, не знаком с кодом, который терпит неудачу. Время, потраченное на написание хорошего сообщения об ошибке, окупается позже, когда тесты не проходят.

С этим связано то, что рамки тестирования имеют тенденцию развиваться в мини-языки самостоятельно, с условными и контрольными и печатными механизмами, но у Go уже есть все эти возможности; зачем их воссоздавать? Мы бы лучше написали тесты на Go; это один язык, чтобы выучить и использовать - такой подход делает тесты простыми и понятными.

Если объем дополнительного кода, требующегося для записи хороших ошибок, кажется повторяющимся и избыточным, тест может работать лучше, если управляем таблицей, перебирая список входов и выходов, определенных в структуре данных (Go имеет отличную поддержку литералов структуры данных). Работа над написанием хорошего теста и хороших сообщений об ошибках будет амортизироваться в течение многих тестовых случаев. Стандартная библиотека Go полна иллюстративных примеров, таких как тесты форматирования для пакета fmt.


Читайте также:


Комментариев нет:

Отправить комментарий