Перейти к содержанию

Что такое PHPUnit и как его использовать?


Рекомендуемые сообщения

  • Админ

software-without-tests.w880.png

PHPUnit – это самая известная в мире система для юнит-тестирования приложений, написанных на языке PHP. Автор сия творения – Себастьян Бергман, хотя проект оупенсорсный и его пишет много-много людей.

В данной статье я рассмотрю установку PHPUnit и вкратце объясню, как им пользоваться.

Что такое юнит-тесты?

Идея юнит-тестирования состоит в том, чтобы проверять на корректность небольшие участки больших программ – прогонять на некоторых «хитрых» тестовых наборах данных.

Нужно ли использовать юнит-тесты на каждом проекте? Я бы сказал, что далеко не всегда. Однако они просто необходимы на любом долгосрочном проекте.

Установка PHPUnit на Windows

Для начала убедитесь, что у вас установлена корректная версия PHP (на данный момент поддерживается версия PHP не ниже 5.6), а также установлен Composer.

Самый простой способ установить PHPUnit – это скачать PHP архив (PHAR), который содержит все необходимые (а также некоторые дополнительные) зависимости PHPUnit в комплекте в одном файле.

Для установки вам, возможно, надо будет включить в php.ini расширение OpenSSL. В общем, установка PHAR слегка похожа на процедуру ручной установки Composer на Windows:

C:\Users\username> cd C:\bin C:\bin> echo @php "%~dp0phpunit.phar" %* > phpunit.cmd C:\bin> exit
  • Создайте каталог для PHP бинарных файлов; например, C:\bin;
  • В переменную среды PATH добавьте «;c:\bin»;
  • Скачайте https://phar.phpunit.de/phpunit.phar;
  • Если файл в названии содержит версию, переименуйте его в «phpunit.phar» и поместите в папку C:\bin;
  • Запустите командную строку Windows (Комбинация клавиш Windows + R , введите cmd и нажмите Enter);
  • Создайте обёрточный BAT-файл (C:\bin\phpunit.cmd):
  •  

Закройте и заново откройте командную строку или перейдите в любую другую папку, отличную от c:\bin и попробуйте запустить phpunit --version. Вы должны увидет версию PHPUnit и копирайт:

C:\Users\username> phpunit --version PHPUnit x.y.z by Sebastian Bergmann and contributors

Подготовка проекта к тестированию

Для начала нам необходимо инициализировать автозагрузчик классов, который будет связывать пространства имён (namespace) с директориями проекта.

Например, нам надо чтобы при написании use SQL\Mysql нам подключался файл libs\sql\mysql.php, в файле composer.json необходимо написать:

{ "autoload": { "psr-0": {" ": "libs/"} } }

Composer – это большая такая штука для управлением зависимостями, но мы её пока будем использовать просто для создания автозагрузчика. Далее необходимо из командной строки в папке проекта выполнить composer install.

D:\WORK\project-example>composer install Loading composer repositories with package information Updating dependencies (including require-dev) Nothing to install or update Generating autoload files

После данных манипуляций должна появится директория vendor, в которой (среди кучи вспомогательных файлов) будет заветный autoload.php. Можно было автозагрузчик написать самим всего в несколько строк кода, но мы же ленивые программисты. К тому же composer нам ещё пригодится.

У PHPUnit есть два варианта запуска – с параметрами в командной строке или с файлом конфигурации. Мы пойдём по второму пути – в папке проекта создаём файл phpunit.xml. В данном файле мы опишем структуру тестов для нашего проекта. Вот пример:

   tests/UserTest 1.php tests/UserTest 2.php   tests/MessagesTest1.php tests/MessagesTest1.php   
 

Как видите, файл состоит из секций testsuite, каждая секция описывает набор тестов. Далее в каждом тестовом наборе мы указываем какие файлы тестов подключать. Можно подключать как отдельные файлы, так и целые директории.

Приступим к созданию самих тестов.

Написание простейшего теста

Основные концепции и шаги для написания тестов на PHPUnit:

  • Тесты для класса Class следует именовать ClassTest.
  • ClassTest обычно наследуется от PHPUnit\Framework\TestCase.
  • Все тесты – это публичные методы нашего ClassTest, их название должно начинаться на test.
  • Внутри этих методов для проверки чего-либо следует вызывать assert-методы. Такие как assertEquals(), например. Но на самом деле их большое количество.

Пример теста из документации (тестирование обычных массивов):

 

Telegram сайта  "Типичный социум"

Do not be indifferent. Support for motivation to continue on to engage in this further! Thanks

img.png

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Обжалование или подача апелляции на снятие Бана в группе "Типичный Социум IT!
Заявки и обжалование отправлять в Телеграм bot @ModeratorTS_Bot


×
×
  • Создать...

Важная информация

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

Write what you are looking for and press enter or click the search icon to begin your search

-->