PHPUnit - 使用配置文件时“不执行任何测试”问题我尝试过的东西

2022-08-30 07:29:10

问题

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

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

$ phpunit tests/GeneralStringFunctions/GeneralStringFunctionsTest

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

输出是我预期的:

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

正常(1 个测试,1 个断言)

然后,我尝试使用配置文件自动加载测试套件,而不必每次都手动键入文件。我创建了一个在我的根目录中调用的文件,并在文件中输入以下内容:http://pastebin.com/0j0L4WBDphpunit.xml

<?xml version = "1.0" encoding="UTF-8" ?>
<phpunit>
    <testsuites>
        <testsuite name="Tests">
            <directory>tests</directory>
        </testsuite>
    </testsuites>
</phpunit>

现在,当我运行命令时:

phpunit

我得到以下输出:

PHPUnit 4.5.0 由 Sebastian Bergmann 和贡献者提供。

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

时间: 16 毫秒, 内存: 1.50Mb

未执行任何测试!

如果它有帮助,我的目录结构如下:
src - 顶级目录(包含我的所有源代码)
测试 - 顶级目录(包含我的所有测试,结构与我的src文件夹相同)
供应商 - Composer第三方文件

我还有作曲家json和lock文件,以及顶级的phpunit xml文件作为文件。

我尝试过的东西

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

答案 1

值得一提的是(迟到),我最近在为一个简单的网站制作一个新的Laravel 5.1项目时遇到了这个问题。我试图调试它,当我尝试时感到困惑:

php artisan make:test homeTest

(它有一个默认测试,只是断言true是真的)

并看到输出

No tests executed!

最终对我来说,问题与我的PHP安装有关 - “phpunit”是全局注册和配置不同的,而Laravel安装附带的phpunit配置得恰到好处并且运行良好。

因此,修复程序正在运行供应商配置的 phpunit(从与 app/ 和 tests/ 相同的根目录):

./vendor/bin/phpunit

希望能帮助别人!


答案 2

您的 XML 文件正常。但是,您必须确保文件夹中的 PHP 文件按如下方式命名:tests/

tests/Test.php <--- 注意大写的“T”
tests/userTest.php
tests/fooBarTest.php
等。

文件名必须以“Test.php”结尾。这就是PHPUnit在目录中寻找的。

此外,每个测试方法都必须具有以“test”开头的名称或注释:@test

public function testFooBar()
{
    // Your test code
}

艺术

 /**
  * @test
  */
 public function fooBarTest() {
     // test code here
 }

希望有所帮助!


推荐