mkharitonov
Новичок
Я имел ввиду, что для нескольких тестовых методов из множества может потребоваться создать свою фикстуру.Если Вы об этом? http://www.phpunit.de/manual/3.6/en/fixtures.html, то зачем выносить фикстуру из метода, если для каждого она своя? Когда всё рядом, то и нагляднее получается.
Как я уже говорил, все это расширение ограничивается одномерной структурой методов в классе.Ну и потом, PHPUnit это ООП-шный фрэймворк со всеми вытекающими, т.е. его легко расширять, переопределять и т.д.
Пожалуйста, не говорите абстрактными фразами. Я упустил какие-то плюсы или не заметил минусов? Ведь писал я этот фреймворк не просто ради того, что бы создать аналог RSpec, а ради решения проблем, с которыми я сталкивался в PHPUnit. Например:Прежде чем браться за улучшение какой то определенной технологии, было бы неплохо хорошенько узнать плюсы и минусы предшественников.
1) Для создания собственных отрицательных утверждений надо создавать дополнительный метод (нету аналога записи be('actual')->not->null()).
2) Что бы создать фикстуру для группы методов надо либо создавать доп. класс, либо выносить код фикстур в отдельные методы и вызывать их в каждом тестовом методе.
3) Неудобно организовывать тесты в виде одномерного списка. Все таки описание работы трестируемого метода (особенно того, который вызывает внутри себя приватные методы), как правило, требует создания, как минимум, нескольких тестовых методов. И, согласитесь, эти методы удобнее разместить в древовидном виде (с отступами в соответствии с уровнем вложенности и т.п.). Притом удобство это не только визуальное, но оно же еще и обеспечивает возможность приминения общих фикстур к таким группам (облажающих по определению высокой связностью), создания утверждений в пределах группы и т.п.
4) Не возможно описывать тесы на русском языке. Если Вы и все участники проектов, над которыми Вы работаете (естественно, проектов на PHP) свободно владеют английским языком, то я за Вас очень рад. В противном случае это ограничение будет либо подталкивать к именованию тестовых методов в виде testИмяТестируемогоМетодаИНеБолее и запахиванию в один такой тестовый метод кучи проверок, либо именованию тестовых методов трудночитаемым транслитом, либо затратам на время, проведенное программистами за словарем и учебником по грамматике (надеюсь понятно, что именование обычных методов двумя-тремя словами на английском языке и составлением целых предложений, описывающих ожидаемое поведение метода — это разные вещи).
5) Если потребуется выполнить одни и те же тесты в разном окружении, то придется потрудиться (в spectrum'е можно воспользоваться контекстами).
Это основные проблемы, которые вспомнил. Еще была серьезная проблема с организацией и выполнением селениум тестов (что бы эти тесты при том еще и не выполнялись вечность).
Буду признателен за ссылки на статьи/темы, где можно подробнее почитать о данных проблемах.К тому же есть более серьезные проблемы, которые не решаются ни в рамках TDD ни рамках BDD.