Простой тест против PHPunit

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

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

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

Я действительно очень озадачен тем, что 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 (он же старый) и ничего больше.
  • PHPUnit отлично работает с каждым сервером непрерывной интеграции, поскольку он выводит все стандартные файлы журналов для покрытия кода и отчетов об испытаниях.
  • Simpletest этого не делает. Хотя это не большая проблема, чтобы начать с нее, вы укусите вас, когда перестанете «просто тестировать» и начнете разработку программного обеспечения (да, это заявление провокационное 🙂 Не относитесь к этому слишком серьезно).
  • PHPUnit активно поддерживается, стабилен и отлично работает для каждой базы кода, каждого сценария и каждого способа, которым вы хотите написать свои тесты.
  • (Субъективный) PHPUnit предоставляет гораздо более приятные отчеты о покрытии кода, чем Simpletest
  • С помощью PHPUnit вы также получаете эти отчеты в своей среде IDE ( Netbeans , Eclipse, …)
  • Также есть несколько предложений для web interface to phpunit tests .

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

 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 

или для окон просто загружает phar и работает:

 php phpunit-.phar 

или при использовании поддерживаемых композиторов

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

вашему композитору.json.


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

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

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

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

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

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


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

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

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

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

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

EDIT: Phing теперь интегрируется с SimpleTest.

  • Я не мог понять, как загрузить и установить PHPUnit.
  • Однако я мог легко понять, как установить SimpleTest.

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

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

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

Так что Simpletest выиграл для меня.

У Baphled есть хорошая статья о SimpleTest против PHPUnit3 .

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

У SimpleTest есть

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

Обратная сторона:

  • не отраслевой стандарт (PHPUnit)

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

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

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

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

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

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

Я не проверил Simple Test на некоторое время, в последний раз у него был плагин eclipse, что для меня является основным фактором, но он не обновлялся в течение длительного времени. Себастьян Бергманн все еще очень активно работает над PHPUnit, но ему все еще не хватает хорошего плагина для eclipse, но он включен для новой Zend Studio.

Этот вопрос старый, но я хочу добавить свой опыт: теперь PHPUnit является стандартом, но если вы работаете с унаследованной системой, которая использует множество и множество глобальных переменных, вы можете застрять от получения. Похоже, что нет хорошего способа выполнить тесты с глобальными vars в PHPUnit, вам, похоже, придется устанавливать переменные через $ GLOBALS, который НЕ ДОЛЖЕН, если у вас есть множество файлов, устанавливающих глобальные переменные во всем мире. Хорошо, некоторые могут сказать, что проблема в старой системе, но это не значит, что мы не можем проводить тесты на такой системе. С SimpleTest такая вещь проста. Я полагаю, что если PHPUnit позволяет нам включать файл во всем мире, а не в пределах любой области класса / функции, это не будет слишком большой проблемой.

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

Это с точки зрения очень случайного PHP-разработчика:

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

Мне потребовалось два часа для установки Simpletest, включая отладку под Eclipse.

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

Снова: это с точки зрения очень случайного пользователя PHP (даже не разработчика 🙂

когда есть тысячи функций для тестирования на одном шаге, phpunit – это путь, простой тест не подходит, поскольку он основан на Интернете.

Я все еще использую простой веб-интерфейс для теста на малый масштаб.

Но оба хороши