Руководство по модульному тестированию. Часть V: имитирующие методы и переопределение конструкторов

  • PHP
  • 1 год назад

В предыдущем уроке по PHPUnit вы познакомились с такими эффективными инструментами, как имитирующие объекты и методы-заглушки. Эти понятия являются залогом успешного модульного тестирования, и как только они «улягутся» у вас в голове, вы начнете понимать, насколько полезным и простым может быть тестирование.

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

Читать далее...

Руководство по модульному тестированию. Часть IV: Имитирующие объекты, методы-заглушки и внедрение зависимости

  • PHP
  • 1 год назад

В предыдущих статьях я показал вам, как писать базовые тесты для базовых методов. Теперь вы можете пользоваться аннотацией @dataProvider, создавать отчеты о покрытии, и знаете, как пользоваться отдельными утверждениями.

До этого мы писали тесты для простых методов. Вызов внутреннего метода в рамках одного и того же класса, вставка блока if, но ничего особо сложного.

Читать далее...

Обучающее руководство по модульному тестированию. Часть III: Тестирование защищенных/частных методов, отчеты о покрытии и индекс CRAP

  • PHP
  • 2 года назад

В третьей части моего обучающего руководства по тестированию я объясню, что такое покрытие кода и почему 100%-е покрытие кода не является обязательной целью.

Но сначала поговорим о тестировании ваших частных/защищенных методов!

Если вы загляните во вторую часть этого руководства, то заметите, что мы инстанцируем класс, который хотим протестировать, через обычный запрос new. У вас может возникнуть вопрос о том, как тестровать защищенные или приватные методы, если к ним невозможно получить доступ напрямую через инстанцированный объект ($url->someProtectedMethod()).

Читать далее...

Руководство по модульному тестированию. Часть II: Утверждения, написание настоящего теста и аннотация @dataProvider

  • PHP
  • 2 года назад

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

Но этот тест познакомил вас с самым базовым утверждением PHPUnit - assertTrue().

Википедия дает следующее определение утверждения:

Читать далее...

Руководство по модульному тестированию. Часть I. Введение в PHPUnit

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

Читать далее...

Тестирование API : Выбор фреймворка для тестирования (PHP, Codeception или Behat)

Существуют различные фреймворки для разработки приложений, которые значительно облегчают нам жизнь. Точно также существуют различные фреймворки для тестирования, которые могут использоваться для автоматического тестирования. Так какой же фреймворк использоваться? Тут все очень субъективно. У всех есть свои плюсы. Важно знать, чего вы хотите достигнуть и в какие сроки. Когда я впервые писал тесты для API, мне понадобилось 4 дня, чтобы найти подходящий инструмент, с помощью которых я мог бы автоматически тестировать все точки API и тесты перед тем, как сделать коммит. Да-да, если у вас нет автоматического инструмента, вам придется все делать вручную каждый день.

Читать далее...