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

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

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

Ответ 1

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

Я действительно действительно, что 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 отлично работает с каждым сервером непрерывной интеграции, поскольку он выводит все стандартные файлы журналов для покрытия кода и отчетов об испытаниях.
  • 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-osi-days-2011

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


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

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

Ответ 2

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

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

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

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

Ответ 3

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

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

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

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

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

Ответ 5

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

SimpleTest имеет

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

Недостаток:

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

Ответ 6

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

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

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

Ответ 7

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

Ответ 8

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

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

Ответ 9

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

Ответ 10

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

Другим перспективным решением является http://www.enhance-php.com, выглядит хорошо:)

Ответ 11

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

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

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

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

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

Ответ 12

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

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

Но оба хороши