如何让 PHPUnit 运行所有的测试?

Posted

技术标签:

【中文标题】如何让 PHPUnit 运行所有的测试?【英文标题】:How to make PHPUnit run all the tests? 【发布时间】:2020-04-28 16:32:53 【问题描述】:

作为一名测试人员,我希望通过使用 phpUnit 来测试我的代码的安全性和可靠性。

目前,PHPUnit 仅通过了 11 项测试中的第一项。然后它放弃剩余的测试,没有任何消息。

>>>  vendor/bin/phpunit [path to my test]
<<<  .

[No message from PHPUnit after the first '.'.]

我尝试过的:

删除 PHPUnit,清除我的缓存 (composer clearcache),然后重新安装 PHPUnit (composer install) 确保每个测试文档字符串中都包含@test 使用 \test[a-zA-Z]\ 作为函数名 使用 phpunit --filter [未运行的测试名称] 将 PHPUnit 从 v8.4.3 更改为 v8.2 (composer update) 将dd("Hi") 添加到第一个、第二个和第三个测试中。 (它显示在 #1 和 #2,但不是 #3)

我读过的:

(搜索词相同但问题不同的东西)this、this、this。 我读过的最有帮助的是this。 还有其他页面。

My test suite.

My phpunit.xml file

我的规格:

Laravel 6.5.6 PHPUnit 8.4.3

如何让 PHPUnit 运行所有 11 个测试?

感谢任何帮助。

【问题讨论】:

【参考方案1】:

为什么测试没有运行?我不知道。

但我确实知道我是如何让它们再次运行的:

删除整个工作目录

我的团队使用 Docker。关于 Docker 的一些东西会跟踪原始目录。即使您将其删除并在其中放置一个具有相同名称的新目录,它似乎也链接到实际文件夹而不是位置。因此,将具有相同名称的新文件夹放在同一个位置是行不通的。所以我需要重启 Docker 的东西。

停止所有 Docker 进程:docker kill $(docker ps -q) 删除所有容器:docker rm $(docker ps -a -q)

把原来的东西备份起来。这些步骤在 Laravel 应用程序中是标准的。

从 BitBucket/GitHub/etc 克隆目录。 在目录下,运行docker-compose build &amp;&amp; docker-compose up -d composer install npm i php artisan migrate php artisan db:seed

【讨论】:

以上是关于如何让 PHPUnit 运行所有的测试?的主要内容,如果未能解决你的问题,请参考以下文章

我无法使用 phpunit 进行测试:无法打开文件“autoload.php”

如何运行我所有的 PHPUnit 测试?

如何让 PHPUnit 等待条件测试?

如何告诉 phpunit 在失败时停止

FilterIterator 应该是 PHPUnit\Framework\TestSuiteIterator 的实例

PHPUnit:如何仅在以 Test 结尾的类中运行测试?