PHPunit和getopt

PHPunit和getopt,phpunit,Phpunit,我试图测试一个使用第三方库的组件,该库使用getopt检索命令行参数 有什么办法可以让它在PHPunit内工作吗 我已尝试在组件调用之前插入: $args = explode( ' ', 'scriptName -q staging_to_xxx -w 250 -c 500' ); $_SERVER['argv'] = $args; 但是这不起作用。您可以使用php.ini设置,register\u argc\u argv=false来设置argv和argc全局变量。看来getopt使用了全局

我试图测试一个使用第三方库的组件,该库使用getopt检索命令行参数

有什么办法可以让它在PHPunit内工作吗

我已尝试在组件调用之前插入:

$args = explode( ' ', 'scriptName -q staging_to_xxx -w 250 -c 500' );
$_SERVER['argv'] = $args;

但是这不起作用。

您可以使用php.ini设置,
register\u argc\u argv=false
来设置argv和argc全局变量。看来getopt使用了全局变量,这意味着这种方法可以工作

<?php
$GLOBALS['argv']=array(
    'argv_test.php',
    '-a999',
    '-b',
    );
$GLOBALS['argc']=count($argv);
var_export(getopt("a:b"));
?>
然后通过覆盖ini设置来运行:

$ php -d register_argc_argv=false argv_test.php
array (
  'a' => '999',
  'b' => false,
)

我是通过谷歌搜索同一主题来这里的,但PHPUnit命令行测试运行程序无法使用。它使用ini_set()设置php.ini设置,但不适用于此目的;显然,在启动解释器之前需要设置。@MaxCrowe哪个版本的php,哪个版本的phpUnit?这是PHP5.3.29和phpUnit 4.6。
$ php -d register_argc_argv=false argv_test.php
array (
  'a' => '999',
  'b' => false,
)