【发布时间】:2011-04-18 00:31:32
【问题描述】:
一般信息:
PHP 5.3.3
PHPUnit 3.4
Zend 框架 1.10.8
Phing 构建目标
<target name="test">
<echo msg="PHPUnit..." />
<phpunit codecoverage="false" haltonfailure="true" haltonerror="true" printsummary="true" bootstrap="${testdir}/application/bootstrap.php">
<batchtest>
<fileset dir="${testdir}">
<include name="**/*Test.php" />
<exclude name="./application/ControllerTestCase.php" />
<exclude name="./application/bootstrap.php" />
</fileset>
</batchtest>
<formatter type="xml" todir="${builddir}" outfile="phpunit-results.xml" />
</phpunit>
<phpunitreport infile="${builddir}/phpunit-results.xml"
styledir="${phpunit.styles.dir}"
format="frames"
todir="${builddir}" />
</target>
这行得通...
phing -f build.xml test
哈德逊/Phing
Hudson 中列出的使用相同 build.xml 文件的我的 Phing 目标不起作用。对于每个单元测试,我都会遇到相同类型的错误(strpos(): Empty delimiter),每当执行 $this->dispatch(..url..) 时就会发生这种错误。
在 Hudson 中执行单元测试目标时在控制台输出中发生
'strpos(): Empty delimiter' in /opt/phing/classes/phing/tasks/ext/phpunit/PHPUnitTask.php:279
在 PHPUnit 结果 XML 文件中
strpos(): Empty delimiter
/opt/zend/library/Zend/Controller/Request/Http.php:504
/opt/zend/library/Zend/Controller/Request/Http.php:551
/opt/zend/library/Zend/Controller/Request/Http.php:615
/opt/zend/library/Zend/Test/PHPUnit/ControllerTestCase.php:187
/var/lib/hudson/.hudson/jobs/IPS/workspace/trunk/tests/application/IndexControllerTest.php:6
/opt/phing/bin/phing.php:37
有人能解释一下吗?
【问题讨论】:
-
与您使用 hudson 的目录相同吗? “testdir”可能是 hudson 所在的目录或类似的目录(未找到引导程序..)
-
您是否使用与 Hudson 相同的用户凭据运行命令行测试?如果是,请检查 .profile 文件中是否对用户帐户进行了一些设置。当 Hudson 启动 shell 时,不会执行此文件。两种选择。 1. 在调用 phing 之前调用 .profile。 2. 将初始化移动到您的环境初始化文件(例如 .env 或 .kshrc;从您的管理员那里找到名称) - 解释:Hudson 不会启动登录 shell 来运行构建步骤,因此登录脚本 (.profile)不会被执行。
-
嗨彼得,感谢您的回复。我找不到环境初始化。您引用的文件,但我能够将 /etc/profile 执行添加到脚本中。我仍然遇到同样的错误。在 Hudson 用户或任何其他用户下,我无法在命令行中复制此问题。我正在使用带有 WHM/cPanel 的 CentOS 5.5。还有什么可以补充的吗?再次感谢!
-
在运行 phpunit form phing 时遇到同样的问题。
标签: php zend-framework hudson phpunit phing