Модуль битрикса для внедрения PHPunit без phar
Клонируем как субмодуль. В этом случае размещение модуля будет local/modules/rzn.phpunit4
Папка local содержит файл unit.php, который нужно скопитьвать в папку local. В репозиторий этот файл не добавлять.
В папке тестируемого модуля нужно создать папку tests
, в которой и будем помещать классы с тестами.
Для запуска отдельных тестовых классов нужно создать файл tests_map.php
, который возвращет массив - здесь будем добавлять описания, для отделных тестовых классов.
Тест запускается для каждого модуля отдельно. Подразумевается, что ваши модули хранятся в папке local/modules
На примере модуля rzn.library запустить можно из браузера или с командной строки:
- 'my.site/local/unit.php?module=rzn.library' - из браузера
- 'wget -q -O - my.site/local/unit.php?module=rzn.library' - командная строка
Если тестовых классов образуется много, и нет необходимости запускать их каждый раз, нужно внести изменения в файл tests_map.php
return [
'array_modif' => ['Rzn\Library\Format\ArrayModificationTest', 'tests/format/arraymodificationTest.php'],
'waterfall' => ['Rzn\Library\Tests\WaterfallTest', 'tests/waterfallTest.php']
];
Здесь: '<ключ к инструкции>' => ['<имя класса>', '<путь к файлу от корня модуля>'],
Для запуска отдельного теста нужно дополнительно в запросе указать ключ из описания:
- 'my.site/local/unit.php?module=rzn.library&class=waterfall' - из браузера
- 'wget -q -O - my.site/local/unit.php?module=rzn.library\&class=waterfall' - командная строка
Встретил проблему при тестировании работы классов ORM битрикса: игнорирует входные параметры. Причем, если тест только один - то все работает. Перестает работать при нескольких тестах.
Для починки нужно перегрузить параметр родительского класса так:
class MyTest extends PHPUnit_Framework_TestCase
{
/**
* Эту переменную нужно вставить в свой класс тестов.
* @var bool
*/
protected $backupGlobals = false;
}