Запускаємо phpunit тести для проекту на 1с-бітрікс

У цьому пості хочу показати свій спосіб запуску юніт-тестів на бітрікс-проектах. При юніт-тестування таких проектів існує відома проблема ініціалізації ядра системи. Нижче я покажу як мені вдалося її вирішити.

Відразу варто відзначити, що завдання стояло запускати тести як локально, де ведеться розробка, так і віддалено на тест-прод і прод майданчиках проектів. А так же, для віддаленого запуску тестів обов'язково потрібно ssh доступ до сервера з правами к / usr / bin / php або де там у вас встановлений інтерпретатор PHP на сервері.

Далі слід щось в роді покрокової інструкції:

Установка і настройка PHPUnit


PHPUnit встановлюється в проект як dependency через Composer.


Далі в папочку / local / tests / складається xml-файл конфігурації PHPUnit, бутстрап і файл ініціалізації ядра Бітрікс:

Запускаємо phpunit тести для проекту на 1с-бітрікс

Тепер докладно по вмісту файлів.
файл /local/tests/phpunit.xml.dist

Тут вказуємо шлях до бутстрап файлу в цій папці і встановлюємо параметр colors в true. Так само задаємо шлях «тест згуртувалася» для поточної папки (local), щоб PHPUnit вважав всі файли з закінченням * Test.php як файли з тест-класами.

Налаштування PhpStorm для тестування


Налаштування самої IDE особливо не відрізняється від описаної в офіційній документації. Суть полягає в тому, що нам треба додати віддалений інтерпретатор PHP на віддаленому сервері, налаштувати PHPUnit в налаштуваннях IDE і додати PHPUnit конфігурацію в Run \ Debug Configuration.

Додаємо віддалений інтерпретатор:
Налаштування - Languages Frameworks - PHP

Запускаємо phpunit тести для проекту на 1с-бітрікс

Додаємо віддалений інтерпретатор

Запускаємо phpunit тести для проекту на 1с-бітрікс

У з'явилися настройках я вибирав «SSH Credentials» і вводив доступ до сервера з описаними на початку поста правами.

Далі йдемо в Настройки - Languages Frameworks - PHP - PHPUnit. Там натискаємо на "+" і вибіріаем «By Remote Interpreter». Вибираємо тільки що доданий інтерпретатор. У блоці PHPUnit Library вибираємо «Use custom autoloader». У «Path to script» потрібно вказати файл autoloader.php. який створює Composer. А в блоці Test Runner вказуємо шлях до /local/tests/phpunit.xml.dist

Запускаємо phpunit тести для проекту на 1с-бітрікс

Наступним кроком буде створення PHPUnit конфігурації в:

Запускаємо phpunit тести для проекту на 1с-бітрікс

У вікні важливо додати звичайний PHPUnit а не PHPUnit on Server. У його настройках в блоці Test Runner потрібно вибрати «Defined in the configuration file»

Це власне і вся настройка. Тепер при натисканні на зелену кнопку-стрілку «Run» повинна з'явитися подібна область:

Тепер згадуємо про вимогу запускати тести на тестовій віддаленої майданчику, локальної та бойової. Це завдання, як описано в статті офіційної документації, наведеної вище, вирішується додаванням потрібних інтерпретаторів і настройек PHPUnit до них. Потім в налаштуваннях проекту змінюється інтерпретатор і та ж зелена стрілочка «Run» запустить ті ж тести, але на іншому сервері (зручно дивитися «чи нічого не поламати» після перенесення проекту).

The fact that running PHPUnit tests over SSH on a remote machine with PhpStorm does not require a special Run / Debug configuration means that we can easily switch where unit tests are run. By switching the project's PHP interpreter through Project Settings | PHP, we can run PHPUnit tests either local or remote without having to reconfigure anything else.

Схожі статті