Що таке phpunit і як його використовувати

Що таке phpunit і як його використовувати

У даній статті я розгляну установку PHPUnit і коротко поясню, як ним користуватися.

Що таке юніт-тести?

Ідея юніт-тестування полягає в тому, щоб перевіряти на коректність невеликі ділянки великих програм - проганяти на деяких "хитрих" тестових наборах даних.

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

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

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

Найпростіший спосіб встановити PHPUnit - це завантажити PHP архів (PHAR), який містить всі необхідні (а також деякі додаткові) залежно PHPUnit в комплекті в одному файлі.

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

dp0phpunit.phar "% *> phpunit.cmd C: \ bin> exit [/ code]

Закрийте і заново відкрийте командний рядок або перейдіть в будь-яку іншу папку, відмінну від 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 необхідно написати:

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 (). наприклад. Але насправді їх велика кількість.

Приклад тесту з документації (тестування звичайних масивів):

[Code = php] use PHPUnit \ Framework \ TestCase; class StackTest extends TestCaseassertEquals (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)); >> [/ code]

Як бачите, нічого складного.

Післямова

Ну що ж, тепер варто спробувати написати свою тестову програму або ж спробувати модульне тестування на вже готовому проекті - впевнений, що покривши бібліотеки тестами, ви тільки поліпшите якість коду.

Крім того, PHPUnit можна використовувати нестандартно - я, наприклад, використовую його для перевірки лабораторних робіт в рамках маленького курсу по алгоритмам і структурам даних.