PHPUnit配置(phpunit.xml) – 加载在引导?
情况
我们在我们的项目中使用PHPUnit,并使用phpunit.xml来确保关闭backupGlobals. 为了进一步确保包含路径被设置并且自动加载是活动的,我们也级联我们的测试引导.也就是说,每个测试和alltests-suite都有一个require_once(__ DIR__.’/../bootstrap.php’);在顶部,一直到基本文件夹级别,它显然读取require_once(__ DIR__./bootstrap.php’);并且实际的引导文件位于. 基本上,我们的测试是自主的.您可以在任何文件夹和任何* Test.php本身中调用任何AllTests.php,它们将以正确的配置运行. 除了’稍等片刻.’ 这是真的,如果我们强制我们的开发人员使用phpunit –configuration = path / to / phpunit.xml或者它们在phpunit.xml的文件夹中(以便PHPUnit将其从当前工作目录中拉出,当它是执行). 偶尔,这使得很难确定为什么一台开发机器的测试正在崩溃,以及为什么它们在另一台机器上运行.只需忘记,引导不是我们需要具有相同测试环境的唯一的事情.请记住,由于您尝试过不能忘记引导程序,因为它在测试本身,忘记其他设置,尤其是通常可选的(如果您在phpunit.xml的文件夹中),则会自动拉),很容易. 其实这是发生了几次. 题 有没有一种方法可以提供在运行的测试文件中使用哪个phpunit.xml,例如在我们方便的无处不在的引导文件中,而不是事先将其提供给PHPUnit,就是通过命令行开关或通过它的目录? 粗略的一瞥代码表明答案是没有 – 配置好,真正似乎加载测试文件甚至被拉: [PHPUnit/TextUI/Command.php] ... if (isset($this->arguments['configuration'])) { $configuration = PHPUnit_Util_Configuration::getInstance( $this->arguments['configuration'] ); $phpunit = $configuration->getPHPUnitConfiguration(); ... 这样做有一定意义,因为配置可以包含测试白名单或黑名单. 真的,在测试引导本身加载测试过滤器是没有意义的,所以这是Windows的潜在配置的一半,但PHPUnit的实际行为标志… [sample of part of our phpunit.xml] <phpunit backupGlobals="false" backupStaticAttributes="false" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" syntaxCheck="false" processIsolation="false" colors="true"> 可能除了“颜色”之外,还会使我成为测试本身应该在一定程度上决定的东西. 安慰奖… 诚然,现在我很高兴只要知道我是否可以从引导文件中教导PHPUnit backupGlobals =“false”,如果有人知道某种方式. (如果没有结果,我将追求的实际答案可能是将phpunit.xml复制到所有子文件夹中,我想避免这种解决方案,因为它创建了冗余副本,如果我们选择更改设置…是啊,哎哟!)
直接回答:不,你不能这样做.
更长的故事 – 通过改变开发者的习惯,更好地解决了这种问题. 这是我们做的: >所有开发人员总是从测试根目录运行测试,该目录具有唯一的phpunit.xml,其中包含所有必要的配置,包括引导,它设置一个类自动加载程序. 这样做意味着放弃从任何目录启动PHPUnit的自由,但说实话,我根本不觉得这是一个亏损. 收益更大:内务代码的数量减少,开发人员不能忘记任何事情,因此结果是一致的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |