问题
为了提高我的代码质量,我决定尝试学习如何使用单元测试而不是我平庸的最佳测试解决方案来测试我的代码。
我决定使用 Composer 安装 PHPUnit 作为个人库,让我可以实现常用的数据库功能。起初我没有 PHPUnit 的配置文件,当我运行如下命令时:
$ phpunit tests/GeneralStringFunctions/GeneralStringFunctionsTest
请注意,这是一个终端命令,所以我没有包含 .php
扩展名。上面提到的GeneralStringFunctionsTest其实是一个 GeneralStringFunctionsTest.php
文件。
输出是我所期望的:
时间:31 毫秒,内存:2.75Mb
好的(1 个测试,1 个断言)
然后我尝试使用配置文件来自动加载测试套件,而不必每次都手动输入文件。我在我的根目录中创建了一个名为 phpunit.xml
的文件,并将以下内容输入到文件中: http ://pastebin.com/0j0L4WBD :
<?xml version = "1.0" encoding="UTF-8" ?>
<phpunit>
<testsuites>
<testsuite name="Tests">
<directory>tests</directory>
</testsuite>
</testsuites>
</phpunit>
现在,当我运行命令时:
phpunit
我得到以下输出:
Sebastian Bergmann 和贡献者的 PHPUnit 4.5.0。
从 /Users/muyiwa/Projects/DatabaseHelper/phpunit.xml 读取配置
时间:16 毫秒,内存:1.50Mb
未执行任何测试!
如果有帮助,我的目录结构如下:
src - 顶级目录(包含我所有的源代码)
tests - 顶级目录(包含我的所有测试,结构与我的 src 文件夹相同)
供应商 - Composer 第三方文件
我还有 composer json 和 lock 文件,以及顶层的 phpunit xml 文件作为文件。
我尝试过的事情
- 将
phpunit.xml
中的目录更改为tests/GeneralStringFunctions
- 将
phpunit.xml
中的目录更改为./tests
- 将
phpunit.xml
文件移动到tests
目录,然后将目录更改为./
而不是tests
- 在
phpunit.xml
中的目录标签中添加后缀属性,以将“Tests”指定为显式后缀。
原文由 user4165455 发布,翻译遵循 CC BY-SA 4.0 许可协议
对于它的价值(迟到),我最近在为一个简单的网站制作一个新的 Laravel 5.1 项目时遇到了这个问题。我试图调试它并且在尝试时感到困惑:
(它有一个默认测试,它只是断言 true 为 true)
并看到了输出
对我来说,问题最终与我的 PHP 安装有关——“phpunit”是全局注册和配置不同的,而 Laravel 安装附带的 phpunit 配置正确并且运行完美。
所以修复是运行供应商配置的 phpunit(从与 app/ 和 tests/ 相同的根目录):
希望对其他人有所帮助!