【问题标题】:How to configure phpunit located in vendor/bin directory?如何配置位于 vendor/bin 目录中的 phpunit?
【发布时间】:2018-04-29 13:32:30
【问题描述】:

我正在尝试为要运行的测试设置数据库,但我遇到了一个问题:

  • 我无法运行 phpunit,因为我的版本较旧。

我已经阅读了所有与在全球范围内升级 phpunit 相关的帖子,但我没有这样做。我尝试了所有方法,但无法全局升级 phpunit,因此我开始使用 vendor/bin/phpunit ,一切正常。现在这让我遇到了第二个问题:

  • 如何设置要运行测试的数据库?

我知道我需要在 phpunit.xml 文件中设置有关数据库的所有信息,但基本路径中的信息仅适用于全局 phpunit 版本。那么在哪里可以设置 vendor/bin phunit 版本的数据库信息呢?

【问题讨论】:

  • 如果您位于项目的根目录中(phpunit.xmlvendor/ 文件夹所在的位置),只要运行:./vendor/bin/phpunit,它应该可以工作。 (如果您使用的是 linux 或 mac)。
  • 感谢您的评论,但我的问题不是关于如何使 phpunit 工作。我想运行一个测试,我需要创建一些记录并在测试结束后删除它们。问题是我需要设置这个测试将在哪里运行。但由于我使用的是 vendor/bin/phpunit 我不知道在哪里设置这些信息。
  • 那么您的问题还不清楚实际问题是什么。但是你可以做的是设置<phpunit bootstrap="path/to/your/bootstrap/file.php">。这是一个将在测试之前加载的文件,因此您可以设置一个模拟数据库类并配置您想要的内容。您还可以设置一些环境变量,就像@Harmoud 在答案中显示的那样。

标签: php laravel phpunit


【解决方案1】:

phpunit.xml 适用于本地和全局 phpunit 安装。您不需要全局 phpunit。只需使用./vendor/bin/phpunit 运行您的测试即可。

对于数据库配置,将以下内容添加到您的 phpunit.xml:

    <!-- To use sqlite in memory (Faster)
    <env name="DB_CONNECTION" value="sqlite"/>
    <env name="DB_DATABASE" value=":memory:"/>

    <!-- To use Mysql -->
    <!--<env name="DB_DATABASE" value="databse_test"/>-->

【讨论】:

  • 感谢您的宝贵时间。我刚刚尝试了您的建议,但是当我运行测试时,所有数据库表都被删除(我使用了 sqlite 方式)所以我猜 phunit 没有读取 phpunit.xml。此外,颜色设置为 true,但是当我运行测试时没有显示任何颜色。
  • 所以,我仍然想弄清楚的是我需要更改以影响 vendor/bin/phpunit 命令的 xml 文件在哪里
【解决方案2】:

正如其他人所说,./vendor/bin/phpunit 应该读取phpunit.xml 文件,如果您从应用程序根路径运行内容。为了帮助测试,您可以明确说明您需要什么配置文件,例如:

vendor/bin/phpunit -c ./phpunit.xml

但如果该文件位于您不需要的当前目录中,也许只需仔细检查一下即可。

【讨论】:

    猜你喜欢
    • 2016-11-20
    • 2021-03-18
    • 2014-10-11
    • 2016-04-18
    • 2020-01-05
    • 2013-09-15
    • 1970-01-01
    相关资源
    最近更新 更多