PHPUnit - 使用配置文件时出现 'No tests executed'

标签 php unit-testing phpunit

问题

为了提高我的代码质量,我决定尝试学习如何使用单元测试而不是我平庸的最佳测试解决方案来测试我的代码。

我决定使用 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/

相关文章:

php - 基于另一个下拉列表的下拉列表

php - && 之后的条件是否总是被评估

c# - 如何测试包含 Application.Current.Properties.ContainsKey ("token"的方法

database - Laravel 5 为测试之间的单元测试重新播种数据库

PHP 表单未发布到 SQL 数据库

php - mysql_fetch_assoc() 中的参数不想显示;

c# - T4 模板 - 从实现接口(interface)的类生成单元测试类

unit-testing - Emberjs 测试组件的 Action 委托(delegate)

database - 使用 phpUnit 进行 Laravel 5 测试而不重置我的数据库

unit-testing - 如何测试 Paypal Express Checkout 集成?