- PVSM.RU - https://www.pvsm.ru -

Inline-тесты для PHP

Inline тесты для PHPInline-тесты — это тесты, встроенные непосредственно в DOC-комментарии тестируемого скрипта. Такая фишка, насколько я знаю, есть в Python, хотя внятного описания найти не смог. В любом случае, идея мне понравилась, так как inline-тесты имеют ряд преимуществ по сравнению с обычными, которые я изложу ниже. Поэтому хочу предложить Вашему вниманию инструмент для запуска таких тестов для PHP.

Итак, какие же преимущества у inline-тестов по сравнению с обычными unit-тестами (PHPUnit и т.д.)?

Преимущества

  1. Простота и скорость добавления тестов: что и говорить, иногда хочется написать тест, но когда вспомнишь, что для этого придется создавать всю иерархию папок для этого класса (напр. App_Module_Class), потом создавать файл и класс теста, писать один и тот же занудный код проверки, потом искать, где же этот PHPUnit находится и как его корректно запускать, — руки опускаются. Да и не жалко это сделать, если тест сложный и важный, а вот когда простой...
  2. Inline-тесты могут дополнять/заменять документацию метода: действительно, программисту иногда легче понять суть кода, прочитав, что и при каких параметрах он возвращает, нежели читать описание.
  3. Inline-тесты могут быть написаны даже для закрытых методов класса: так как скрипт запуска фактически извлекает функции и методы из контекста, ему не важно private они или public.
  4. Их нельзя потерять: тесты всегда будут вместе с кодом.

Конечно, сфера применения таких тестов довольно узкая, существуют 2 ограничения:

Ограничения

  1. Подходит только для простых тестов: во-первых, тест нужно уместить в одну строчку комментария, а во-вторых, сложный тест, использующий взаимосвязь нескольких функций, уже не напишешь.
  2. Подходит только для изолированных функций/методов: функция должна общаться с внешним миром только через аргументы и возвращаемое значение.

Скачать скрипт запуска тестов можно здесь: github.com/ptrofimov/phpinlinetest [1]

P.S. Так как PHPUnit использует теги @assert для автогенерации своих тестов, решено было оставить такое же название для совместимости.

Автор: TedMosby


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/php-2/7879

Ссылки в тексте:

[1] github.com/ptrofimov/phpinlinetest: https://github.com/ptrofimov/phpinlinetest