<MyRusakov.ru />

PHP и MySQL с Нуля до Гуру 2.0

PHP и MySQL с Нуля до Гуру 2.0

Данный курс научит Вас программировать на самом популярном Web-языке в мире - PHP. Курс состоит из 11 разделов, в которых с нуля рассказывается и показывается процесс написания различных скриптов на PHP.

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

Почти к каждому уроку идут упражнения.

Просмотрев данный курс, Вы сможете создавать абсолютно любые PHP-сайты любой сложности.

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Модульное тестирование в PHP средствами PHPUnit

Модульное тестирование в PHP средствами PHPUnit

Всем доброго времени суток! Сегодня я хотел бы поговорить с Вами о том, что такое модульное тестирование в PHP.

При написании даже самых простых программ периодически приходиться останавливаться и проводить рефакторинг для того, чтобы понять правильно ли написана программа. А рефакторинге кода в PHP я уже рассказывал в одной из публикаций на сайте, с которой можно ознакомиться здесь.

В общем, конечно, данный подход неплох, однако у него есть существенные недостатки. Так, например, при написании, какого-либо достаточно крупного проекта, код будет постепенно засоряться закомментированными отладочными функциями, типа print или print_r.В случае работы над собственным проектом, код которого никто, ну или почти никто, читать не собирается, он, до некоторой поры, будет оправдан.

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

Наступает такой момент, когда один новый класс, метод, условие или цикл - рушат всю систему. Изменения в одном месте приводят к ошибкам в другом. И вот они уже лезут без конца, как из рога изобилия, и становиться понятно, что так дальше невозможно. А все было бы гораздо лучше, если бы сначала, помимо всего прочего, были бы написаны PHP Unit тесты. Не зря ведь говорит, Мартин Фаулер, что когда бы Вы ни пытались напечатать что-то через print в целях отладки или рефакторинга, лучше напишите это в виде Unit теста.

Итак, с теорией вроде ознакомились, теперь перейдем непосредственно к коду. Здесь необходимо сделать важные замечания, все операции проводятся на ПК под управлением Windows 7 c установленным PHP 7 версии. Дальше будет по пунктам.

1) Скачиваем по ссылке файл phpunit-6.3.0.phar, который представляет собой исполняемый PHP архив.

2) Загруженный файл перемещаем в папкуC:\bin. В этой же папке создаем файл phpunit.bat, записываем в него следующее содержимое: @php C:\bin\phpunit-6.3.0.phar %*

Учтите, что путь C:\bin должен быть определен в системной переменной PATH, иначе при попытке выполнить в консоли команду phpunit Вы получите ошибку!

3) Откройте консоль и выполните команду phpunit, и если все правильно, то в консоли должна отобразиться справка.

Конечно, существуют и другие способы установки PHPUnit, однако я нашел данный способ наиболее приемлемым. За дополнительной информацией Вы всегда можете обратиться на официальный сайт проекта PHPUnit. Итак, установка завершена, теперь перейдем непосредственно, к коду.

<?php

  // файл StackTest.php, расположен в каталоге C:/Projects/php/tests
  // подключаем главный класс TestCase из пространства имен PHPUnit\Framework
  use PHPUnit\Framework\TestCase;

  // определяем тестируемый класс как наследник класса TestCase
  class StackTest extends TestCase
  {
   // тестируемые функции являются публичными, начинаются со слова test
   public function testPushAndPop()
   {
    $stack = []; // создали массив
    // и проверили утверждение assert на то, что число элементов в массиве равно нулю
    $this->assertEquals(0, count($stack));

    array_push($stack, 'foo'); // добавили одним элемент в массив
    $this->assertEquals('foo', $stack[count($stack)-1]); // проверили на равенство
    $this->assertEquals(1, count($stack));

    $this->assertEquals('foo', array_pop($stack));
    $this->assertEquals(0, count($stack));
   }
  }
?>

Код хорошо комментирован, однако поясню пару моментов. Краеугольным камнем Unit тестирования является утверждение (assertion). Утверждение - это Ваше предположение об ожидаемом значении, или другими словами Вы утверждаете, что значение переменной, элемента массива, результат выполнения метода и т.д. будет равно такому-то значению. В примере выше, при первоначальном создании массива, ожидаемое значение его длины - 0. Так оно и есть на самом деле в нашем примере.

В данном случае мы используем только одно утверждение assertEquals, хотя в классе TestCase библиотеки PHPUnit их несколько десятков, на все случаи жизни, так сказать.

Так тест мы написали, а что дальше? А дальше его надо запустить. Для этого открываем консоль, переходим в папку с нашим тестом (PHP Unit тесты обычно располагаются в отдельной папке tests) и запускаем команду phpunit, передав ей в аргументе текущий каталог (обозначается одной точкой).

cd C:/Projects/php/tests && phpunit .

Данная команда автоматически пройдется по всем PHP тестам, которые есть в данном каталоге. По завершении выполнения, она выведет информацию о том, сколько тестов пройдено и, возможно, провалено.

Таким образом, сегодня мы с Вами выяснили что такое Unit тестирование в PHP, что применять его не только полезно, но и нужно. А если Вы знаете PHP плохо, или не знаете его совсем, то специально для Вас у меня есть отличный видеокурс "PHP и MySQL с Нуля до Гуру 2.0", в котором, я, в частности, подробно разбираю тему модульного (Unit) тестирования в PHP.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (2):

Owner8_15_6_35 Owner8_15_6_35 09.08.2017 14:43:49

А нет статьи где описывается как сделать регистрацию\вход\управление пользователями и т.д. всё вместе

Ответить

Castels Castels 10.08.2017 16:32:32

Здравствуйте! На сайте есть статьи по указанным Вами темам, их можно найти через форму поиска. Однако, если Вы хотите получить отличные знания по этим темам, то можете посмотреть курс, в котором эти темы разбираются очень подробно. Вот ссылка: https://srs.myrusakov.ru/php2?utm_source=MyRusakov.ru&utm_campaign=php2&utm_content=article_1017

Ответить

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.