首页 > 解决方案 > 如何使用 XML 文件设置 phpunit 的工作目录?

问题描述

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

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

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

有什么我可以添加到我的phpunit.xml文件中来告诉它使用该/public目录作为“cwd”(当前工作目录)运行测试的吗?

标签: phplaravelphpunit

解决方案


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

  1. 可能无法更改cwdphpunit 默认使用的值(嗯,在 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"));

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


推荐阅读