phpunit:使用bootstrapping运行时无法打开文件“FILENAME.php”

时间:2017-08-10 05:06:59

标签: php phpunit

我在错误的服务器上创建了一个新的作曲家项目,我有以下目录结构:

 PROJNAME (dir)
  --PROJNAME.php (my project file) 
  tests (dir)
  --PROJNAMETest.php

我一直在运行以下命令,该命令在错误的服务器上运行:

vendor/bin/phpunit --bootstrap PROJNAME.php --testdox tests/

但是在将文件移动到正确的服务器之后(使用scp -r,删除供应商目录,并进行作曲家安装),我收到错误:

Cannot open file "PROJNAME.php".

然而,当我在没有--bootstrap PROJNAME.php的情况下运行时,它可以正常运行!我不明白这一点。

以下是PROJNAME.php的内容:

<?php

require 'vendor/autoload.php';


function DummyMethod(){
}
?>

对于文件测试/ PROJNAMETest.php:

<?php

require 'vendor/autoload.php';

use PHPUnit\Framework\TestCase;

final class PROJNAMETest extends TestCase
{

public function testDummyMethod()
{
$this->assertEquals(true, true);
}
}

我还要指出两台机器上的文件权限看起来都一样:

-rw-r--r--  1 root root    69 Aug  9 21:07 PROJNAME.php

由于我使用root用户,因此我看不到权限..

请告知可能导致此事的原因......

谢谢!

1 个答案:

答案 0 :(得分:0)

  

我收到错误:

Cannot open file "PROJNAME.php".

  

然而,当我在没有--bootstrap PROJNAME.php的情况下运行时,它可以正常运行!我不明白这一点。

错误消息“无法打开文件...”是故意的。该消息可以读作:

  

无法打开bootstrap文件...

在{Phpunit测试套件中的几乎所有其他内容之前加载bootstrap file,并且建立用于测试的最小项目设置。该错误只显示无法打开引导程序文件。

请记住,您正在使用引导程序文件的相对路径,因此您需要注意这一点与测试运行程序的(调用)工作目录相结合可以解析为正确(可读)的引导程序-文件。除非不是,否则你会看到这个错误。这个错误是故意btw。,无法打开引导程序文件是你想知道的。

只需登录到正确的服务器,切换到bootstrap文件的目录并执行该目录中的testsuite。它应该工作(除非文件系统中的用户无法自己打开文件)。

要克服系统差异,请创建一个phpunit.xml.dist)文件,该文件具有引导程序文件的属性,并使用该配置文件执行测试套件。将其置于版本控制之下,以便您以更加明确和稳定的方式管理配置和设置。

但首先要找出无法打开文件的原因。