问题
为了提高我的代码质量,我决定尝试学习如何使用单元测试而不是我平庸的最佳测试解决方案来测试我的代码。
我决定使用 composer 安装 PHPUnit 作为个人库,让我可以实现常用的数据库功能。起初我没有 PHPUnit 的配置文件,当我运行如下命令时:
$ phpunit tests/GeneralStringFunctions/GeneralStringFunctionsTest
请注意,这是一个终端命令,所以我没有包含 .php
扩展名。上面提到的GeneralStringFunctionsTest其实是一个GeneralStringFunctionsTest.php
文件。
输出是我所期望的:
Time: 31 ms, Memory: 2.75Mb
OK (1 test, 1 assertion)
然后我尝试使用配置文件来自动加载测试套件,而不必每次都手动输入文件。我在我的根目录中创建了一个名为 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
我得到以下输出:
PHPUnit 4.5.0 by Sebastian Bergmann and contributors.
Configuration read from /Users/muyiwa/Projects/DatabaseHelper/phpunit.xml
Time: 16 ms, Memory: 1.50Mb
No tests executed!
如果有帮助,我的目录结构如下:
src - 顶级目录(包含我所有的源代码)
tests - 顶级目录(包含我的所有测试,结构与我的 src 文件夹相同)
供应商 - Composer 第三方文件
我还有 composer json 和 lock 文件,以及顶层的 phpunit xml 文件作为文件。
我尝试过的事情
- 将
phpunit.xml
中的目录更改为tests/GeneralStringFunctions
- 将
phpunit.xml
中的目录改为./tests
- 将
phpunit.xml
文件移动到tests
目录,然后将目录更改为./
而不是tests
。 - 在
phpunit.xml
中的目录标签中添加后缀属性,指定“Tests”为显式后缀。
最佳答案
对于它的值(value)(迟到),我最近在为一个简单的网站制作一个新的 Laravel 5.1 项目时遇到了这个问题。我尝试调试它,尝试时感到困惑:
php artisan make:test homeTest
(它有一个默认测试,只是断言 true 为 true)
看到了输出
No tests executed!
问题最终对我来说与我的 PHP 安装有关——“phpunit”是全局注册和配置不同的,而 Laravel 安装附带的 phpunit 配置正确并且运行完美。
所以修复是运行供应商配置的 phpunit(来自与 app/和 tests/相同的根目录):
./vendor/bin/phpunit
希望对其他人有所帮助!
关于PHPUnit - 使用配置文件时出现 'No tests executed',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29299206/