Первый опыт тестирования приложений Laravel 4 (PHPSpec/BDD против PHPUnit/TDD)

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

PHPUnit и PHPSpec – какой из них может привести чтобы улучшить долгосрочную ремонтопригодность и методы программирования?

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

В настоящее время моя разработка PHP сосредоточена вокруг разработки Laravel 4.

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

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

У меня была ранняя/короткая попытка интеграции PHPUnit и PHPSpec в существующий проект, но я просто не знал, с чего начать с написания первоначальных тестов, и в итоге отказался от них на данный момент.

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

Любые ресурсы/понимание от любого, кто испытал оба, были бы очень признательны.


person Erik Aybar    schedule 29.04.2014    source источник
comment
Я боролся с тем же самым. Ты член Laracasts? У Джеффри Уэя есть несколько видеороликов как по PHPUnit, так и по PHPSpec. Поскольку я новичок в тестировании, я решил начать с PHPUnit, потому что там гораздо больше документации и с него проще начать.   -  person Mitch    schedule 29.04.2014
comment
Ха, @MitchGlenn, это точно моя ситуация. Я работаю с Laracasts с декабря прошлого года и многому научился у Джеффри Уэя (похоже, в последнее время ему понравился PHPSpec). Мое любопытство разработчика заставляет меня хотеть погрузиться в PHPSpec, но кажется, что по этой причине более разумным и эффективным выбором с точки зрения затрат времени и средств будет PHPUnit. Спасибо за отзыв.   -  person Erik Aybar    schedule 29.04.2014
comment
Я присоединился 6 дней назад и у меня 65 видео, я чувствую, что мой мозг скоро взорвется от такого количества отличного контента. Я хочу использовать PHPSpec из-за того, как великолепно звучит Джеффри, но, как вы сказали, чтобы сэкономить время, я начинаю с более простого пути для выполнения работы.   -  person Mitch    schedule 29.04.2014


Ответы (1)


PhpSpec

PhpSpec — это инструмент дизайна. Поначалу это усложнит вам жизнь, если вы не привыкли к TDD (подход «сначала тестирование»).

Однако в процессе вы многому научитесь. Вы также будете много ругаться. Многие вещи, которые считаются плохой практикой, невозможны с PhpSpec (например, частичные моки). Вам придется это понять и принять. Тестировать фасад Laravel сложно, потому что это не ООП.

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

PhpUnit

С другой стороны, PhpUnit — это инструмент тестирования. Вы можете использовать его с TDD, BDD или как вы это называете. Но вам не нужно.

Выбор

Если ваша цель — научиться проектировать лучше, и вы привержены подходу «сначала тестирование», PhpSpec поможет вам. Если ваша цель — протестировать или проверить, PhpUnit — ваш друг.

TDD и BDD

Это не TDD и не BDD. По крайней мере, с точки зрения уровня кода они одинаковы. BDD начинался как переопределение TDD, предлагая лучшую терминологию. Теперь это выходит за рамки уровня кода, и это намного больше. Сейчас я предпочитаю использовать термин, предложенный Гойко Аджичем — Спецификация на примере.

person Jakub Zalas    schedule 30.04.2014
comment
Идеально. Это в значительной степени суть, которую я получил, прочитав и поэкспериментировав с ними... В моем случае мне, вероятно, нужно начать с PHPUnit, так как мне действительно нужно провести некоторое тестирование, реализованное в некоторых существующих проектах. А затем!... прыгайте на арену PHPSpec. Я использую rails/rspec (*вздох!) последние несколько недель и получаю от этого удовольствие. На данный момент что-то вроде раскола между двумя мирами.... Спасибо за понимание. - person Erik Aybar; 01.05.2014
comment
Правильно ли я понимаю: каждый раз, когда одна из ваших функций использует фасад laravel, ее больше можно проверить с помощью phpspec? Я думаю, что это может быть связано с другой проблемой, с которой я столкнулся (stackoverflow.com/questions/27973926/) - person Aakil Fernandes; 16.01.2015