我正在尝试为大量代码更改不可用的应用程序编写单元测试。几乎所有的代码库中的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
。
Ques1:是否可以设置$ _ SERVER变量在运行命令行通过在PHPUnit测试?
我还必须通过Jenkins运行这些单元测试,并且我无法通过ANT /构建文件设置这些服务器变量。
Ques2:是否可以通过Jenkins中的ant构建文件设置这些变量,或者在通过Jenkins执行phpunit测试之前运行任何shell脚本?
我试图通过一个shell脚本
export DOCUMENT_ROOT=/server/path-to-root-dir
出口服务器变量并调用脚本在build.xml在詹金斯
<export name="setEnv" description="set server var">
<exec executable="sh">
<arg value = "sumit.sh" />
</exec>
</target>
,但它不工作。有没有我能为此做的任何设置? 谢谢!
我们可以设置'$ _ SERVER [ 'DOCUMENT_ROOT']'直接通过构建文件?你的方法' ''完全正常,但我的代码中有很多SERVER变量,所以我必须写所有'$ _SERVER [] = getenv()'在一个PHP文件中,并将不得不在所有的测试类中导入该文件。有没有办法可以减少它? –
Sumitk
@Sumitk - 您可以在'bootstrap.php'中执行PHPUnit在运行任何测试之前自动加载的任务。将文件放置在测试根目录下,或使用'--bootstrap'命令行参数将PHPUnit指向它。 –
这个'bootstrap.php'是一个我们与测试文件一起创建的文件,还是与PHPUnit一起提供的?因为我无法在我的系统上看到它。另外,如果我们创建它,我应该在哪里放置它?与所有的测试文件或'phpunit.xml.dist'? – Sumitk