SimpleTest против PHPunit - PullRequest
       62

SimpleTest против PHPunit

127 голосов
/ 29 августа 2008

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

Любая особая сила каждого из них делает его подходящим для любого конкретного случая?

Ответы [ 12 ]

87 голосов
/ 03 января 2012

Этот вопрос довольно устарел, но поскольку он все еще получает трафик и ответы, я, хотя и повторяю здесь свою точку зрения, даже при том, что я уже сделал это по некоторым другим (более новым) вопросам.

Я действительно действительно сбит с толку, что SimpleTest все же считается альтернативой phpunit. Может быть, я просто дезинформирован, но насколько я видел:

  • PHPUnit является стандартом; большинство фреймворков используют его (например, Zend Framework (1 и 2), Cake, Agavi, даже Symfony оставляет свой собственный Framework в Symfony 2 для phpunit).
  • PHPUnit интегрирован в каждую PHP IDE (Eclipse, Netbeans, Zend Stuide, PHPStorm) и прекрасно работает.
  • Simpletest имеет расширение eclipse для PHP 5.1 (a.k.a. old) и ничего больше.
  • PHPUnit отлично работает со всеми серверами непрерывной интеграции, поскольку выводит все стандартные файлы журналов для покрытия кода и отчетов о тестировании.
  • Самым простым не является. Хотя это не большая проблема, начинать с нее будет утомительно, когда вы перестанете «просто тестировать» и начнете разрабатывать программное обеспечение (да, это утверждение провокационное :) Не принимайте это слишком серьезно).
  • PHPUnit активно поддерживается, стабилен и отлично работает для любой кодовой базы, каждого сценария и любого способа написания тестов.
  • (Субъективно) PHPUnit предоставляет гораздо более приятные отчеты о покрытии кода , чем Simpletest
  • С помощью PHPUnit вы также получаете эти отчеты в своей IDE ( Netbeans , Eclipse, ...)
  • Также есть пара предложений для web interface to phpunit tests.

Я еще не видел ни одного аргумента в пользу SimpleTest. Это даже не проще установить, так как PHPUnit доступен через pear:

pear channel-discover pear.phpunit.de
pear install phpunit/PHPUnit

и «первый тест» выглядит примерно так же.

Начиная с PHPUnit 3.7 еще проще установить , просто используя PHAR Archive

wget http://pear.phpunit.de/get/phpunit.phar
chmod +x phpunit-3.7.6.phar

или для windows просто загрузка phar и запуск:

php phpunit-.phar

или при использовании поддерживаемого композитора установите , например,

"require-dev": {
    "phpunit/phpunit": "3.7.*"
}

на ваш composer.json.


Для всего, что вы хотите протестировать, PHPUnit найдет решение, и вы сможете найти помощь практически в любом месте (ТАК, #phpunit irc channel на freenode, почти каждый разработчик php;))

Пожалуйста, поправьте меня, если я сказал что-то не так или забыл что-то :) 1073 *

Обзор инструментов тестирования PHP

Видео: http://conference.phpnw.org.uk/phpnw11/schedule/sebastian-bergmann/

Слайды: http://www.slideshare.net/sebastian_bergmann/the-php-testers-toolbox-osi-days-2011

В нем упоминается что-то вроде Atoum , которое само по себе называется: «Простая, современная и интуитивно понятная среда модульного тестирования для PHP!»


Полное раскрытие

Первоначально я написал этот ответ в январе 2011 года, где не имел никакого отношения к какому-либо проекту по тестированию PHP. С тех пор я стал участником PHPUnit.

34 голосов
/ 29 августа 2008

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

Причины, по которым мне нравится PHPUnit, заключаются в том, что он интегрируется с другими инструментами разработчика PHP, такими как phing (как и SimpleTest), phpUnderControl и Xinc . Начиная с версии 3.0, имеет поддержку , активно развивается и документация превосходна.

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

РЕДАКТИРОВАТЬ: Phing теперь также интегрируется с SimpleTest.

17 голосов
/ 18 ноября 2009
  • Я НЕ мог понять, как загрузить и установить PHPUnit.
  • Однако я мог легко понять, как установить SimpleTest.

    (Насколько я помню, инструкции для PHPUnit говорили что-то вроде «установите его через PEAR, и мы не будем давать никаких инструкций о том, как это сделать другим способом») см:

  • http://www.phpunit.de/manual/current/en/installation.html

Для SimpleTest , просто загрузите его и укажите на него из своего кода.

Итак, Симплетест выиграл для меня.

12 голосов
/ 29 марта 2014

Половина упомянутых пунктов в принятом ответе просто не соответствует действительности:

SimpleTest имеет

  • более легкая настройка (извлечь в папку, включить и запустить)
  • просто проверьте папку в системе управления версиями (попробуйте сделать это сейчас с помощью phpunit :)) *
  • меньше зависимостей и множество расширений (webtester, formtester, auth)
  • хороший репортер покрытия кода, который легко расширять (точки, названия функций, цвета)
  • Сводная информация о покрытии кода (наконец-то появилась в PHPUnit 4.x)
  • достойный веб-бегун и веб-бегун ajax, с группами и выполнением в одном файле
  • еще лучший инструмент сравнения (без пробелов и проблем с новой строкой)
  • адаптер / оболочка для запуска SimpleTests с помощью phpUnit и наоборот
  • совместимость PHP5.4 +

Недостатки:

  • не отраслевой стандарт (PHPUnit)
  • активно не поддерживается
12 голосов
/ 02 мая 2009

У Baphled есть хорошая статья на SimpleTest vs PHPUnit3 .

7 голосов
/ 17 июня 2009

Ну, я создал веб-интерфейс для тестирования пользовательского интерфейса phpUnit и сделал его доступным на sourceforge Использует ajax и имеет довольно крутой интерфейс, если вы хотите попробовать его, проверьте его в sourceforge. Название проекта phpunitwebui, а веб-сайт http://phpunitwebui.sourceforge.net/

7 голосов
/ 29 августа 2008

Я обнаружил, что SimpleTest было даже проще, чем PHPUnit для настройки. Просто извлеките его, и вы готовы идти. Преимущество этого заключается в том, что вы работаете на нескольких машинах, поскольку вы можете хранить всю инфраструктуру тестирования таким же образом, как и ваш исходный код, и тем самым знать, что вы используете один и тот же код платформы. Особенно, если вы измените его каким-либо образом.

Итак, я бы сказал, что преимуществом SimpleTest является то, что он очень легкий и портативный.

SimpleTest также поставляется с очень простым HTML GUI, который довольно легко расширить, если вы захотите. Насколько я знаю, PHPUnit не включает HTML GUI, но есть доступные для скачивания GUI, такие как Cool .

3 голосов
/ 26 декабря 2010

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

Упрощенный веб-интерфейс очень полезен, но иногда он может стать громоздким. В моем текущем проекте мне пришлось бы добавить больше работы в систему, чтобы приложение (API) работало с веб-интерфейсом (правильно настроить apache, скопируйте файлы в корень public_html и т. Д.), Чем это было бы просто запустить phpunit из рабочей области eclipse. Поэтому я выбираю PHPUnit. Кроме того, использование PEAR было большим плюсом, поскольку вам не нужно вручную отслеживать обновления. Просто запускайте pear upgrade время от времени, и PHPUnit будет обновляться.

1 голос
/ 31 августа 2016

Это с точки зрения очень простого разработчика PHP:

Мне потребовалось два дня, чтобы понять PHPUnit, в основном пытаясь отладить в Eclipse, от которого я наконец отказался.

У меня ушло два часа на настройку Simpletest, включая отладку в Eclipse.

Возможно, я найду недостатки Simpletest в будущем, но пока он хорошо справляется с тем, что мне нужно: TestClasses, Mock объекты, отладка тестового кода и веб-интерфейс для быстрого снимка ситуации.

Еще раз: Это с точки зрения очень случайного пользователя PHP (даже не разработчик: -)

1 голос
/ 15 октября 2012

Этот вопрос старый, но я хочу добавить свой опыт: PHPUnit сейчас кажется стандартом, но если вы работаете с устаревшей системой, которая использует множество глобальных переменных, вы можете застрять с самого начала. Кажется, что в PHPUnit нет хорошего способа сделать тесты с глобальными переменными, вам, похоже, придется устанавливать переменные через $ GLOBALS, что НИЧЕГО ХОРОШО, если у вас есть множество файлов, устанавливающих глобальные переменные везде. Хорошо, некоторые могут сказать, что проблема в устаревшей системе, но это не значит, что мы не можем проводить тесты на такой системе. С SimpleTest такая вещь проста. Я полагаю, что если PHPUnit позволяет нам включать файл глобально, а не в какую-либо область действия класса / функции, то это не будет слишком большой проблемой.

Еще одно многообещающее решение - http://www.enhance -php.com , выглядит красиво:)

...