Phpunit在不同的机器上表现不同

时间:2010-12-09 17:29:56

标签: php phpunit

我为我的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

2 个答案:

答案 0 :(得分:1)

需要注意两件事:

  • 两台计算机上PHP配置中的包含路径
  • 您的homedir或脚本的cwd周围没有另一个类文件副本。通常.将位于PHP的包含路径中,而文件的流氓副本可能会导致此类问题

答案 1 :(得分:0)

是否有可能不是正在运行的PHPUnit,而是本地php配置问题导致被测系统出现问题?在两台机器上区分你的php.ini,你可能会发现一些差异。