Действительно ли возможно выполнить PHPUnit с динамично загруженной дополнительной библиотекой?

У меня есть комплект тестов PHPUnit для моего расширения, и я хочу выполнить их как часть Гудзонского процесса сборки расширения.

Таким образом, я хочу выполнить PHPUnit определение дополнительной библиотеки для загрузки во времени выполнения, но я не могу выяснить, как сделать это.

Моя структура каталогов следующие:

/myextension.c
/otherextensionfiles.*
/modules/myextension.so
/tests/unittests.php

Я попытался выполнить PHPUnit с XML-файлом конфигурации следующим образом:







И затем выполняя его следующим образом (от tests каталог):

phpunit --configuration config.xml unittests.php

Но затем я добираюсь Fatal error: Call to undefined function myfunction(), таким образом, это не загружает библиотеку.

Я также попробовал:

phpunit -d extension_dir=../modules/ -d extension=myextension.so unittests.php 

И также dl('myextension.so') к тестовой установке, но никакой радости.

Если это релевантно, это использует PHP 5.2 и PHPUnit 3.4.11.

Я осуществил кросспостинг этого вопроса в пользовательском списке рассылки PHPUnit.

1
задан skaffman 24 April 2010 в 11:26
поделиться

1 ответ

Я подозреваю, что невозможно установить extension_dir во время выполнения в PHPUnit, поскольку он имеет атрибут PHP_INI_SYSTEM на этой диаграмме .

Это означает, что это невозможно с помощью ini_set () , поэтому я предполагаю, что также невозможно установить его с помощью конфигурации PHPUnit .

РЕДАКТИРОВАТЬ:

Однако, поскольку PHPUnit - это просто еще один сценарий PHP, можно запустить PHP напрямую и таким образом передать команды переопределения!

Это позволяет обойти указанную выше проблему, и следующее работает:

php -d extension_dir=../modules -d extension=myextension.so /usr/bin/phpunit unittests.php

Единственная проблема с этим подходом заключается в том, что PHPUnit больше не сможет найти какие-либо расширения, которые были установлены в обычном каталоге (например, / usr / lib / php5 / 20060613 / ), это можно решить, добавив символические ссылки из вашего extension_dir на соответствующие файлы в extension_dir по умолчанию.

2
ответ дан 3 September 2019 в 01:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: