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






Я обнаружил, что SimpleTest даже проще, чем PHPUnit в настройке. Просто извлеките его, и все готово. Преимущество этого заключается в том, что вы работаете на нескольких машинах, поскольку вы можете хранить всю среду тестирования так же, как и исходный код, и, таким образом, знать, что вы используете один и тот же код платформы. Особенно, если его каким-либо образом модифицировать.
Итак, я бы сказал, что сильная сторона SimpleTest состоит в том, что он очень легкий и портативный.
SimpleTest также поставляется с очень простым графическим пользовательским интерфейсом HTML, который при желании довольно легко расширить. Насколько мне известно, PHPUnit не включает графический интерфейс HTML, но есть графические интерфейсы, доступные для загрузки, такие как Круто.
Ах, чувак, я совершенно случайно отказался от этого голоса и даже не осознавал этого до следующего дня. Теперь мой голос заблокирован ... Извините.
Я какое-то время не проверял Simple Test, в прошлый раз у него был плагин eclipse, что для меня является важным фактором, но он давно не обновлялся. Себастьян Бергманн все еще очень активно работает над PHPUnit, но ему все еще не хватает хорошего плагина для eclipse, но он включен в новую Zend Studio.
Сейчас я предпочитаю PHPUnit, но когда я только начинал, я использовал SimpleTest, так как у меня не всегда был доступ к командной строке. SimpleTest хорош, но, на мой взгляд, единственное, что у него есть над PHPUnit, - это веб-раннер.
Причины, по которым мне нравится PHPUnit, заключаются в том, что он интегрируется с другими инструментами разработчика PHP, такими как пинг (как и SimpleTest), phpUnderControl и Xinc. Начиная с версии 3.0 он поддерживает насмехается, активно развивается, документация отличная.
На самом деле единственный способ ответить на этот вопрос для себя - это попробовать оба варианта и посмотреть, какой из них больше подходит вашему стилю.
Обновлено: Phing теперь также интегрируется с SimpleTest.
Просто примечание, на веб-сайте phing говорится, что он поддерживает SimpleTest.
У Бафледа есть хорошая статья о SimpleTest против PHPUnit3.
Что ж, я сделал веб-средство запуска тестов пользовательского интерфейса phpUnit и сделал его доступным на sourceforge. Использует ajax и имеет довольно крутой интерфейс, если вы хотите попробовать его, проверьте его на sourceforge. Имя проекта - phpunitwebui, а веб-сайт - http://phpunitwebui.sourceforge.net/.
Однако я мог легко понять, как установить SimpleTest.
(Насколько я помню, в инструкциях для PHPUnit говорилось что-то вроде «установите его через PEAR, и мы не будем давать никаких инструкций, как это сделать по-другому») видеть:
Для SimpleTest просто загрузите его и укажите на него из своего кода.
Так что Simpletest выиграл для меня.
Я полагаю, что документация изменилась с тех пор, как вы разместили свой ответ. Сегодня вы просто набираете 3 команды, и он будет установлен, вам даже не нужно ничего загружать самостоятельно.
Вы можете установить PHPUnit через PEAR, загрузить его вручную или получить последний код с github. На главной странице есть четкая ссылка на инструкции по установке. SimpleTest дает мне только один вариант, указывая на sourceforge и множество рекламных роликов ...
Под Windows установить PHPUnit очень сложно. Пришлось установить на 2 рабочие станции. Первый занял 3 часа, с помощью IRC-канала PEAR. Со второй (той же ОС) мне так и не удалось. Тем не менее, в Linux это прелесть.
SimpleTest +1 Простота установки Простота использования. PHPUnit более мощный, чем самый простой, чтобы удовлетворить мои потребности.
Возможно, что-то изменилось с '09, но PHPUnit устанавливается за секунды с помощью всего нескольких команд в Windows.
@Cypher Извини, что побил мертвую лошадь, но, скачав phpunit.par и попробовав php phpunit.phar, я получил только Parse error: syntax error, unexpected T_FUNCTION, expecting ')'. Не очень хорошее начало!
@DmitriZaitsev Я установил через PEAR как описано здесь: phpunit.de/manual/current/en/…
@Cypher Похоже, нужен PHP 5.3 или выше. На данный момент я остановился на SimpleTest - отличное руководство и отсутствие хлопот при установке.
Абсолютно согласен с простотой начала работы с SimpleTest. Есть утраченная элегантность в том, чтобы просто щелкнуть и получить то, что вам нужно, находясь на странице, без дополнительного шага перехода к оболочке (я тоже не стесняюсь консоли). И первый опыт использования его не имеет себе равных. Нет файлов XML для создания или чего-то еще. Просто импортируйте его, импортируйте код для тестирования и напишите тесты. Это не может быть лучше для простых приложений.
Как уже указывалось, это в основном выбор предпочтений, так как оба будут запускать тесты, которые вы для него написали, и сообщать о результатах.
Веб-интерфейс Simpletest очень полезен, но иногда может быть громоздким. В моем текущем проекте мне пришлось бы вложить больше усилий в систему, чтобы мое приложение (API) работало с веб-интерфейсом (правильно настроить apache, скопировать файлы в корень public_html и т. д.), Чем это было бы просто запустить phpunit из рабочей области eclipse. Поэтому я выбираю PHPUnit. Кроме того, использование PEAR было большим плюсом, поскольку вам не нужно вручную отслеживать обновления. Просто запускайте pear upgrade время от времени, и PHPUnit будет постоянно обновляться.
Я не понимаю этого анализа. Вы хотите сказать, что тестируете функциональность браузерного типа через плагин eclipse для phpunit, а не через локальную настройку apache?
Нет, я говорю, что в моем проекте, поскольку нет функций типа браузера, я использую phpunit через eclipse.
Этот вопрос довольно устарел, но, поскольку он все еще получает трафик и ответы, я, хотя я снова заявляю свою точку зрения, даже если я уже сделал это по некоторым другим (более новым) вопросам.
Я действительно очень озадачен тем, что SimpleTest Все еще считается альтернативой phpunit. Может быть, меня просто дезинформировали, но насколько я видел:
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
или для Windows просто скачивание phar и работает:
php phpunit-.phar
или при использовании способов поддерживаемая установка композитора, например
"require-dev": {
"phpunit/phpunit": "3.7.*"
}
в ваш composer.json.
Для всего, что вы хотите протестировать, PHPUnit найдет решение, и вы сможете найти помощь практически где угодно (SO, #phpunit irc channel на freenode, почти каждый разработчик php;))
Пожалуйста, поправьте меня, если я что-то не так сказал или что-то забыл :)
Видео: http://conference.phpnw.org.uk/phpnw11/schedule/sebastian-bergmann/
Слайды: http://www.slideshare.net/sebastian_bergmann/the-php-testers-toolbox-osi-days-2011
Он упоминает такие вещи, как Атум, который называет себя: «Простая, современная и интуитивно понятная среда модульного тестирования для PHP!»
Первоначально я написал этот ответ в январе 2011 года, когда я не участвовал ни в каком проекте тестирования PHP. С тех пор я стал сотрудником PHPUnit.
Есть ли в PHPUnit адаптер для превращения каталога записанных файлов простых тестов в группу тестов PHPUnit, чтобы они могли работать вместе?
Я обнаружил, что веб-тестирование simpletest было намного проще настроить и запустить, чем веб-тестирование phpunit. Поскольку это в значительной степени необходимость для php, это победа для малых и средних проектов, когда вы просто хотите мгновенно добавить среду тестирования, а важны простые уровни тестов. Например, исключая веб-тесты, я обычно использую только метод assertTrue () в simpletest. Веб-тесты, конечно, усложняются, но не обязательно чрезмерно.
"> Поскольку это в значительной степени необходимость для php" - я категорически не согласен с этим. Я еще не видел php-проекта (или фреймворка) любой, который запускает свои тесты через браузер. Это создает массу проблем без особой пользы. Времена, когда php-код разрабатывался в системе общего хостинга с использованием ftp-синхронизации, давно прошли (скрещенные пальцы), и даже для небольшого проекта не требуется работающий веб-сервер (максимум один php поставляется из коробки). ЕДИНИЦА ИЗМЕРЕНИЯ Тестирование через браузер, а не через cli или IDE - настолько редкий вариант использования, что я не думаю, что это вообще имеет значение.
Кроме того, существует инструмент веб-тестирования для phpunit stackoverflow.com/a/8575361/285578, который практически никто не использует, но он отлично работает в тех немногих случаях, когда люди этого хотят. Каждому свое :)
Сильная причина выбрать SimpleTest вместо PHPUnit заключается в том, что последний представляет собой инструмент командной строки, который должен быть установлен на сервере, на котором выполняются тесты, что иногда намного сложнее, чем просто include, устанавливающий файлы SimpleTest .PHP (как объяснили другие.) Для профессиональных программистов, создающих свои Собственная тестовая среда PHPUnit звучит сложно, но если интегрировать систему тестирования в приложение с открытым исходным кодом на основе PHP, где "Разработчики" для приложения может быть в лучшем случае (что я называю) "профессиональные программисты", тогда простота SimpleTest имеет реальную привлекательность, в любом случае для меня. FWIW.
@MikeSchinkel Я не могу с этим согласиться. Мы использовали SimpleTest в качестве интегрированного решения для тестирования на основе браузера для нашей специальной платформы приложений. Он всегда был доступен и не требовал никакой конфигурации установки, кроме svn pull, поскольку был включен в исходный код фреймворка. Мы перешли на PHPUnit для интеграции в СНГ. Поскольку мы являемся магазином Windows, установка и настройка PHPUnit может стать кошмаром, и многие из наших младших разработчиков просто ломают среду или теряют желание тестировать.
Ссылка на слайды не работает.
Ссылки на видео и слайды мертвы.
Это старый вопрос, но я хочу добавить свой опыт: PHPUnit сейчас кажется стандартом, но если вы работаете с устаревшей системой, которая использует множество глобальных переменных, вы можете застрять с самого начала. Похоже, что нет хорошего способа проводить тесты с глобальными переменными в PHPUnit, вам, похоже, нужно устанавливать свои переменные через $ GLOBALS, что НЕ ХОРОШО, если у вас есть множество файлов, устанавливающих глобальные переменные повсюду. Хорошо, некоторые могут сказать, что проблема в устаревшей системе, но это не значит, что мы не можем проводить тесты в такой системе. С SimpleTest все просто. Я полагаю, что если PHPUnit позволяет нам включать файл глобально, а не в рамках какой-либо области класса / функции, это тоже не будет большой проблемой.
Еще одно перспективное решение - http://www.enhance-php.com, красиво смотрится :)
Я всегда просто использовал <phpunit backupGlobals = "false"> в XML конфигурации и никогда не испытывал проблем с глобальными переменными в тестах ...
@ mr1031011 ваша ссылка никуда не годится. Может вы имели в виду ?: github.com/Enhance-PHP/Enhance-PHP
@Potherca, расскажите мне об этом - у меня изначально было много проблем с глобальными объектами в проекте устаревшего кода, и я думаю, что пробовал все аннотации @backupGlobals @backupStaticAttributes @runInSeparateProcess @preserveGlobalState, global $xxx и все его комбинации, прежде чем попробовать --no-globals-backup и внезапно видя все работает как положено. : D
Половина упомянутых пунктов в принятом ответе просто неверны:
SimpleTest имеет
Обратная сторона:
По-прежнему полезен мне и моему боссу php4-серверу ^^ "
Спасибо. Я обновил кодовую базу SimpleTest для работы с более новыми версиями PHP, и в течение года будет добавлено еще несколько настроек. - PHP4 является EOL с давних пор и не получает никаких исправлений безопасности. Я бы больше не использовал его на внешних сервисах. Вы должны убедить своего начальника разрешить запуск обновления до версии не ниже v5.5 или выше v5.6: php.net/supported-versions.php#php-5.6
Я знаю Йенса, спасибо за совет. Очень хорошее решение для тестирования твое
=) Спасибо, что показали мне репозиторий Github. Я начал беспокоиться о «необслуживаемой части». Заметьте, только внешне, поскольку он по-прежнему делает все, что я когда-либо хотел, от простой тестовой среды с современным кодом, с которым я работаю.
SimpleTest имеет гораздо большую гибкость в том, как вы настраиваете свои тестовые наборы, поскольку вы можете делать все это в PHP-коде. Таким образом, в вашем распоряжении полный язык программирования, а не только файлы конфигурации xml и параметры терминала. PHPUnit может в большей степени поддерживаться инструментами, но больше говорит о том, как сообщество PHP продолжает поддерживать второстепенные вещи.
когда есть тысячи функций, которые нужно протестировать за один раз, phpunit - это то, что нужно, простой тест не работает, поскольку он основан на сети.
Я все еще использую простой Интернет для небольших тестов.
Но оба хороши
SimpleTest - это нет, основанный исключительно на веб-технологиях. До сих пор я использовал его исключительно из командной строки.
Это с точки зрения обычного PHP-разработчика:
Мне потребовалось два дня, чтобы разобраться в PHPUnit, в основном пытаясь отлаживать под Eclipse, от чего я наконец отказался.
На установку Simpletest, включая отладку в Eclipse, у меня ушло два часа.
Возможно, в будущем я найду недостатки Simpletest, но пока он хорошо справляется с тем, что мне нужно: TestClasses, Mock-объекты, отладка тестового кода и веб-интерфейс для быстрого снимка ситуации.
Опять же: Это с точки зрения обычного пользователя PHP. (даже не разработчик :-)
Я бы пошел на PHPUnit, это намного лучше