Модульное тестирование для разработки плагинов

17

Мне нужно применить модульное тестирование для одного из моих плагинов. Недавно я перестроил его в классы, поэтому юнит-тестирование должно быть проще в применении.

Каковы эффективные стратегии для модульного тестирования моего плагина? Мне нужен способ использовать функции WordPress, используемые в плагине, но мне не нужен работающий сайт WordPress (просто тестируйте данные в БД AFAIK), верно?

Мне трудно понять, как просто протестировать плагин, а не плагин в контексте сайта. Я мог бы использовать Selenium для этого, но сейчас я просто хочу сосредоточиться на модульном тестировании функциональности классов плагинов, чтобы не нарушать их при каждом обновлении.

Фернандо Бриано
источник

Ответы:

14

Будучи бывшим инженером-программистом, строящим крупные бизнес-типы и попавшим в интерактивное агентство, позвольте мне рассказать вам о тестировании при разработке для Wordpress:

  1. Ваше модульное тестирование должно проверять наименьшее количество поведения, которое может выполнить класс. Каждый класс должен быть в состоянии пройти тестирование независимо от Wordpress. Если у вас есть зависимость от Wordpress, попробуйте создать фиктивные объекты и / или методы в своем тесте, чтобы обойти это. В конечном счете, это немного изменит то, как вы пишете свой код, но это будет гораздо более тестируемым. Как обычно нет бесплатного обеда.

  2. Когда вы достигнете уровня функционального тестирования, вы сможете протестировать свой код с зависимостями Wordpress. Здесь вы на самом деле проверяете, что ваш плагин действительно выполняет службу, которую он должен.

  3. В зависимости от того, что делает ваш плагин - рассмотрите возможность использования тестов на основе Selenium, которые проверяют наличие данных в DOM с помощью идентификаторов. Он достаточно надежный, и вероятность перехода от версии к версии значительно ниже. Опять же, хитрость заключается в том, чтобы думать о тестировании как о части вашего жизненного цикла разработки программного обеспечения. Большие изменения в коде приведут к большим изменениям в ваших тестах. Вся часть затрат на ведение бизнеса.

Если вам понадобится какая-либо помощь с любым из этих инструментов - я был бы рад ответить, если вы откроете новый вопрос. В своей работе я использую как PHPUnit, так и его расширение для селена.

Этан Сейферт
источник
1
Эй, Итан, спасибо за такой профессиональный ответ. Не могу ожидать от этого сообщества меньшего :) Я попытаюсь написать модульные тесты для своих классов и создать несколько фиктивных объектов для работы с функциями WordPress. Шаг 2 - это действительно сложная часть для меня, так как мне понадобится WordPress для какого-то автоматического тестирования, где я мог бы начать использовать Selenium позже. Я начну с PHPUnit и посмотрю, как это происходит. Благодарность!
Фернандо Бриано
Идеальный ответ!
rsman
8

Я на самом деле не сделал это сам, но есть среда тестирования для модульного тестирования WordPress. Он предназначен для тестирования ядра, но может быть адаптирован для тестирования плагинов.

Больше информации здесь:

http://codex.wordpress.org/Automated_Testing

http://svn.automattic.com/wordpress-tests/

эфирное масло
источник
-1

Недавно я создал учебник, который берет информацию из моего поиска в Google, чтобы показать, как:

  1. Используйте WordPress Core сделать модульные тесты
  2. Скрыть php устарела / сеанс отправил предупреждения
  3. Покажите, как настроить параметры вашего плагина в тестах
  4. Используйте одно и то же wp core make unit для тестирования нескольких плагинов

Учебник здесь , я надеюсь, что это поможет

Dáithí
источник