加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHPUnit配置(phpunit.xml) – 加载在引导?

发布时间:2020-12-13 17:27:18 所属栏目:PHP教程 来源:网络整理
导读:情况 我们在我们的项目中使用PHPUnit,并使用phpunit.xml来确保关闭backupGlobals. 为了进一步确保包含路径被设置并且自动加载是活动的,我们也级联我们的测试引导.也就是说,每个测试和alltests-suite都有一个require_once(__ DIR__.’/../bootstrap.php’);在
情况

我们在我们的项目中使用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,其中包含所有必要的配置,包括引导,它设置一个类自动加载程序.
>我们没有这样的测试套件,测试使用目录分组,没有AllTests.php在任何地方,因为它不是必需的. PHPUnit可以使用目录的名称,并在其中运行所有测试.
>它仍然可以运行任何单个测试通过给它一个路径或整个测试(通过给目录的路径).它只需要从测试根目录完成,或者它不工作.

这样做意味着放弃从任何目录启动PHPUnit的自由,但说实话,我根本不觉得这是一个亏损.

收益更大:内务代码的数量减少,开发人员不能忘记任何事情,因此结果是一致的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读