The Problem

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

我决定使用composer为个人库安装PHPUnit,它允许我实现常见的数据库功能.起初,我没有PHPUnit的配置文件,当我运行以下命令时:

$ phpunit tests/GeneralStringFunctions/GeneralStringFunctionsTest

请注意,这是一个终端命令,所以我没有包括.php扩展名.上面提到的GeneralStringFunctionsTest实际上是一个GeneralStringFunctionsTest.php文件.

输出与我预期的一样:

时间:31毫秒,内存:2.75Mb

OK(1个测试,1个断言)

然后,我try 使用配置文件自动加载测试套件,而不必每次都手动键入文件.我在根目录中创建了一个名为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由塞巴斯蒂安·伯格曼和贡献者编写.

从/Users/muyiwa/Projects/DatabaseHelper/phpunit读取配置.xml

时间:16ms,内存:1.50Mb

没有执行任何测试!

为了方便起见,我的目录 struct 如下:
SRC-顶级目录(包含我所有的源代码)
测试-顶级目录(包含我的所有测试, struct 与我的src文件夹相同)
供应商-编写器第三方文件

我还有composer json和lock文件,以及作为文件的顶层phpunit xml文件.

Things I've Tried

  • phpunit.xml中的目录更改为tests/GeneralStringFunctions
  • phpunit.xml中的目录更改为./tests
  • phpunit.xml文件移动到tests目录,然后将目录更改为./而不是tests.
  • phpunit.xml中向目录标记添加后缀属性,以指定"Tests"作为显式后缀.

推荐答案

不管怎么说(迟到),我最近在为一个简单的网站做一个新的Laravel 5.1项目时遇到了这个问题.我试着调试它,但当我try 的时候,我感到困惑:

php artisan make:test homeTest

(其中有一个默认测试,该测试仅断言true为true)

看到了输出

No tests executed!

对我来说,问题最终与我的PHP安装有关——"phpunit"在全球注册并以不同的方式配置,而Laravel安装附带的phpunit配置恰到好处,运行完美.

因此,修复是运行供应商配置的phpunit(与app/和test/位于同一根目录中):

./vendor/bin/phpunit

希望这能帮助别人!

Php相关问答推荐

根据类别在WooCommerce中添加库存数量后缀

Laravel 10 -扩展现有的artisan命令?

Laravel;Composer安装突然返回选项快捷方式不能为空.

Laravel自定义验证规则更正

打折时更改 Woocommerce 产品名称

将自定义字段添加到管理产品中 WooCommerce 3.2+ 中的快速编辑

用户注册表单中的 HTTP 错误 405

如何判断php中wordpress路径之外的文件夹是否存在?

将产品数量、名称和结帐链接添加到 WooCommerce 添加到购物车消息

WordPress 分页无法正常工作

Firefox 115 会话行为:为什么页面无法找到要加载的现有会话 ID?

向元素添加类时添加循环错误

根据WooCommerce中选定的变体重量更改输入数量步值

在WooCommerce单产品页面中显示特价产品的节省金额

WooCommerce checkout 流程中基于所选选项添加自定义费用

为 WordPress 页面创建新功能

如何将子查询结果添加到学说 2 中主查询的末尾?

如何通过路由传递变量

将加密/解密函数从 PHP 转换为 NodeJS

多排序子数组 - 包含范围数据的子数组