如何使用 XML 文件设置 phpunit 的工作目录?



我正在浏览文档,但我没有看到任何更改运行测试时使用的工作目录的选项。

我正在使用PhpUnit,因为它包含在Laravel中。我希望能够从项目的根目录运行vendor/bin/phpunit,并使用/public目录作为工作目录运行它。

我尝试从/public运行../vendor/bin/phpunit,但由于 phpunit.xml 文件不在公共目录中,并且我不想每次都指定我的配置文件路径,这不起作用。

我可以向我的phpunit.xml文件添加一些内容,以告诉它使用/public目录作为"cwd"(当前工作目录(运行测试?

根据我在评论和文档中收到的反馈,我确定了以下内容:

  1. 可能无法更改 phpunit 默认使用的cwd(嗯,在 PhpStorm 中是可能的,但不是不编写某种包装脚本的命令行(
  2. 依赖于从特定目录运行的代码不是一个好主意。

我有一个类中的一些代码,如下所示:

$var = file_get_contents("../some_file.json");

这工作正常 - 直到您尝试添加单元测试。Web服务器使用/public目录作为cwd运行,而phpunit将使用根目录运行。

与其试图强制phpunit总是使用特定的cwd(/public(,我决定最好从依赖于一致cwd的代码中删除相对路径。所以上面的一行变成了:

$var = file_get_contents(base_path("some_file.json"));

我不想仅仅为了进行一些测试而更改已经有效的生产代码,但这种更改似乎微不足道。(无论如何,这是一个改进(

好吧,你必须在PHP中做实际的chdir,但是你可以在XML(<phpunit bootstrap="./bootstrap.php">(中定义一个引导脚本,并让它改变工作目录。

或者,您可以将setUpBeforeClass函数放入测试类中,以更改工作目录。

最新更新