我为我的PHP应用程序编写了一些PHPUnit测试。我正在开发两台同步整个开发文件系统的开发机器,还有一个自动测试系统,可以在一个干净的svn checkout上运行测试。
现在,有些奇怪的事情正在发生。其中一台开发机器运行Ubuntu linux 10.10,PHP 5.3.3,phpunit 3.4.6,后来我升级到3.4.14。当我在每次测试中运行phpunit时,所有测试都通过。当我在我的xml配置文件上运行phpunit时,只使用phpunit --configuration=phpunit.cfg
运行它们,最后一个测试用例失败,并返回Class myClass not found
错误。此类位于使用require_once
加载的文件中。升级phpunit没有任何区别。
编辑 我觉得PHP包含使用require_once
的文件列表未在我的linux机器上重置,但这些类实际上已丢失,也就是说,它认为它有
已包含myclass.php
,但未加载内部类。
现在,另一台机器正在运行Mac OS X Snow Leopard 10.6.5,PHP 5.3.3和phpunit 3.4.3。如果我单独运行单元测试,就不会出现错误,就像在linux框中一样,但是当我使用xml配置运行测试时,也不会发生错误。我们还有一个运行linux 10.4 LTS,PHP 5.2.6和phpunit 3.4.9的自动测试环境。也没有错误。
所有系统使用完全相同的文件,因此源代码或测试没有区别。 phpunit.xml也是一样。
我觉得这里完全处于黑暗中。我怎样才能弄清楚问题是什么?
linux开发机器和macbook都运行PHP 5.3.3。自动测试机器运行5.2.6
答案 0 :(得分:1)
需要注意两件事:
cwd
周围没有另一个类文件副本。通常.
将位于PHP的包含路径中,而文件的流氓副本可能会导致此类问题答案 1 :(得分:0)
是否有可能不是正在运行的PHPUnit,而是本地php配置问题导致被测系统出现问题?在两台机器上区分你的php.ini,你可能会发现一些差异。