我在错误的服务器上创建了一个新的作曲家项目,我有以下目录结构:
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用户,因此我看不到权限..
请告知可能导致此事的原因......
谢谢!
答案 0 :(得分:0)
我收到错误:
Cannot open file "PROJNAME.php".
和
然而,当我在没有--bootstrap PROJNAME.php的情况下运行时,它可以正常运行!我不明白这一点。
错误消息“无法打开文件...”是故意的。该消息可以读作:
无法打开bootstrap文件...
在{Phpunit测试套件中的几乎所有其他内容之前加载bootstrap file,并且建立用于测试的最小项目设置。该错误只显示无法打开引导程序文件。
请记住,您正在使用引导程序文件的相对路径,因此您需要注意这一点与测试运行程序的(调用)工作目录相结合可以解析为正确(可读)的引导程序-文件。除非不是,否则你会看到这个错误。这个错误是故意btw。,无法打开引导程序文件是你想知道的。
只需登录到正确的服务器,切换到bootstrap文件的目录并执行该目录中的testsuite。它应该工作(除非文件系统中的用户无法自己打开文件)。
要克服系统差异,请创建一个phpunit.xml
(.dist
)文件,该文件具有引导程序文件的属性,并使用该配置文件执行测试套件。将其置于版本控制之下,以便您以更加明确和稳定的方式管理配置和设置。
但首先要找出无法打开文件的原因。