Я не думаю, что ответы выше решают мою проблему.
Принятый ответ не идеален. Таким образом, пользовательские параметры всегда должны быть помещены в конец списка параметров, и нет индикатора, который бы указывал, что они являются пользовательскими параметрами. Если количество пользовательских опций, которые мне нужны, не фиксировано, я должен много писать для разбора пользовательских опций с помощью регулярных выражений или чего-то в этом роде.
Решение переменных среды хорошее, но не естественное. Выглядит странно
VAR1=aaa VAR2=bbb VAR3=ccc ./phpunit-custom-option CustomOptionTest.php
Сценарий оболочки плюс решение setUp () имеют тот же недостаток, что и принятый. Возможно, вам придется много кода для разбора файла и обработки непредсказуемого количества пользовательских опций.
Я не думаю, что скрипт начальной загрузки является правильным решением. Его можно использовать для автоматической обработки грязных работ, каждый раз выполняя одни и те же действия, но не занимаясь сменой деталей.
Мне не нравятся все приведенные выше ответы.
И у меня тоже нет хорошей идеи. Но, возможно, то, что я сделал, могло вдохновить тебя. Я разбудил проект phpunit на GitHub, немного изменил код и сделал так, чтобы он поддерживал функцию пользовательских опций.
Модифицированная версия phpunit, может принимать пользовательские опции, такие как:
./phpuint-custom-option --custom var1=value1 --custom var2=value2 CustomOptionTest.php
И в тесте вы можете посетить пользовательские опции, обратившись к суперглобальным переменным $ _SERVER
<?php
class CustomOptionTest extends PHPUnit_Framework_TestCase {
public function testCustomOption() {
$this->assertEquals('value1', $_SERVER['var1']);
$this->assertEquals('value2', $_SERVER['var2']);
}
}
и вы можете найти мой код здесь и загрузить модифицированную версию здесь (нажав ссылку «просмотреть полный файл» на странице).
FYI. эта статья является аналогичным решением.