在 Laravel 中生成覆盖率报告时 PHPUnit 显示 "未执行测试"

4

我正在尝试制作一份测试覆盖率报告,但是当我执行以下命令时:

phpunit --coverage-html C:\Users\user\report.html

我遇到了以下错误:

PHPUnit 3.7.21 by Sebastian Bergmann.

Configuration read from C:\xampp\htdocs\dynamic_form\phpunit.xml


Time: 0 seconds, Memory: 6.00Mb

No tests executed!

Generating code coverage report in HTML format ... done

我正在使用 Laravel 默认提供的 phpunit.xml 文件。

可能出现了什么问题?

谢谢。

编辑:我添加了 forceCoversAnnotation="false" 属性,但问题仍然存在。


1
你有任何测试吗?这些测试在没有覆盖率的情况下是否正常运行? - Chin Leung
如果测试根本没有运行,您可能还需要在phpunit意识到任何新测试之前进行composer dump。 - James Clark
@ChinLeung 是的,我已经有测试并且可以正常运行。 - jdoe1980
@JamesClarkDeveloper 我运行了composer dump-autoload命令,问题仍然存在。 - jdoe1980
你正在运行一个极其老旧的phpunit版本。实际上,它太老了,甚至在phpunit的官方发布历史页面上也找不到:https://phpunit.de/supported-versions.html 我建议升级到新版本。 - Dirk Scholten
1个回答

1
在Laravel中,单元测试位于tests文件夹内,并且它们有一些命名规则以便运行它们。
我之前也遇到了同样的问题,以下是我的解决方案:
1)命名空间必须为Test\Unit(如果你有一个中间文件夹,包括在Tests内部)
2)你构建的函数名称必须以test开头
public function testMyFunction()
{
    // Put your code here
}

我检查了一下,测试运行正常,但没有覆盖率报告。 - jdoe1980
今天我在YouTube上跟随教程学习,使用的是较旧版本的Laravel,没有带有“test”前缀的函数可以正常工作。但是在新版本的Laravel(我的情况是Laravel 8)中,函数名称必须以“test”单词为前缀,否则它将无法正常工作。请注意第2点中的重点。 - Toni Tegar Sahidi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接