PHPUnit的:无法打开文件“FILENAME.php”自引导
运行时,我创建了错误的服务器一个新的作曲家的项目,我有以下目录结构:PHPUnit的:无法打开文件“FILENAME.php”自引导
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用户工作,我没有看到权限尽可能的原因。
请指教可能导致这种情况的原因...
谢谢!
I get error:
Cannot open file "PROJNAME.php".
和
However when I am running without --bootstrap PROJNAME.php, it works without errors! I don't understand this.
错误消息 “无法打开文件...” 是意图。
Cannot open bootstrap file ...
的bootstrap file加载之前几乎PHPUnit的测试套件(S)一切,它是建立在裸最小的项目设置进行测试:作为可读取的消息。该错误仅表明引导程序文件无法打开。
请记住,您使用的是引导文件的相对路径,因此您需要注意与测试运行器的(调用)工作目录结合可以解析为正确的(可读的)引导文件。除非没有,否则你会看到这个错误。这个错误是由btw打算的,不能打开引导文件是你想知道的。
只需登录到正确的服务器,切换到引导程序文件的目录并在该目录中执行testsuite。它应该工作(除非文件不能作为文件系统中的用户自己打开)。
要克服系统差异,请创建一个phpunit.xml
(.dist
)文件,该文件具有引导文件的属性并使用该配置文件执行测试套件。将其置于版本控制之下,以便以更加定义和稳定的方式管理配置和设置。
但首先找出文件无法打开的原因。
那么,今天我重新连接到开发服务器,它只是工作,没有这样的错误了!我不能告诉为什么..也许重新登录服务器已经设置了一些env变量,我不知道... @hakre:请你至少解释引导“PROJNAME.php”,并没有引导运行之间的区别?我正在使用它来确保文件在测试用例运行之前被加载......是否真的需要?之后,我会接受你的答案作为我猜的解决方案:) – Carmageddon
将引导程序看作包含在测试套件运行之前的PHP包含文件。这允许您设置PHP环境,如您认为合适的,例如初始化自动加载器等。如果您不需要引导程序文件(您的测试套件无需工作),那么您就不需要使用它。如果你不需要,不要使用它,所以你可以在需要的时候使用它。) - 一个常见的用例是基于composer的项目使用'vendor/autoload.php'文件作为引导。 – hakre
“错误”的服务器? – hakre