【发布时间】:2011-08-04 00:39:04
【问题描述】:
我正在尝试为无法进行大量代码更改的应用程序编写单元测试。代码库中几乎所有的 .php 文件都使用了一些 $_SERVER[''] 变量,例如
require_once $_SERVER['DOCUMENT_ROOT'] . '/mainApi.php';
所以现在当我必须编写和运行 PHPUnit 测试用例时,我必须以某种方式设置这些变量。 目前我是在用户环境中设置这些变量,然后在做
$_SERVER['DOCUMENT_ROOT'] = getenv('DOCUMENT_ROOT');
require_once $_SERVER['DOCUMENT_ROOT'] . '/mainApi.php';
像这样获取服务器变量工作正常。我通过命令行以$ phpunit test.php 运行我的测试。
问题1:是否可以在通过命令行运行 phpunit 测试时设置 $_SERVER 变量?
我还必须通过 Jenkins 运行这些单元测试,我无法通过 ANT/build 文件设置这些服务器变量。
问题2:是否可以通过 Jenkins 中的 ant 构建文件或在通过 Jenkins 执行 phpunit 测试之前运行任何 shell 脚本来设置这些变量?
我尝试通过 shell 脚本导出服务器变量
export DOCUMENT_ROOT=/server/path-to-root-dir
并在 Jenkins 的 build.xml 中调用该脚本
<export name="setEnv" description="set server var">
<exec executable="sh">
<arg value = "sumit.sh" />
</exec>
</target>
但它不起作用。我可以为此做任何设置吗? 谢谢!
【问题讨论】: